#TIL #elixirlang map key, value 패턴 매칭
def put_new(map, key, value) do
case map do
%{^key => _value} ->
map
%{} ->
put(map, key, value)
other ->
:erlang.error({:badmap, other})
end
end
#elixirlang 함수 이름이 _new 로 끝나면 뭐다? 글을 쓰면서 Map.put_new/3 구현을 봤다. key를 찾고 key가 있으면 map 리턴. 없다면 추가한 map 리턴. 이런 구현을 예상했다.
예상한 것과 다른 구현이다. %{^key => value} ->
처럼 map의 key, value로 패턴 매칭이 가능한 걸 배웠다.