중첩된 맵을 탐색하여 값을 얻어오는 문제였다. 하나의 기능을 직접 구현(extract_from_path
)하는 것이 한 번, get_in
함수를 이용해 구현(get_in_path
)하는 것이 한 번. 같은 기능도 직접 만들어보면 조금 더 잘 이해되는 것 같다.
defmodule BasketballWebsite do
def extract_from_path(data, path) do
do_extract(data, String.split(path, "."))
end
# 키에 해당하는 항목이 없는 경우
defp do_extract(nil, _), do: nil
# 원하는 path를 다 찾아들어간 경우
defp do_extract(value, []), do: value
# 재귀
defp do_extract(data = %{}, [h | t]) do
Map.get(data, h) |> do_extract(t)
end
def get_in_path(data, path) do
get_in(data, String.split(path, "."))
end
end
'호두나무 공방 > Exercism in Elixir' 카테고리의 다른 글
File Sniffer - Exercism in Elixir (0) | 2022.05.02 |
---|---|
Boutique Inventory - Exercism in Elixir (0) | 2022.04.29 |
Resistor Color Trio - Exercism in Elixir (0) | 2022.04.22 |
Sublist - Exercism in Elixir (0) | 2022.04.21 |
Gigasecond - Exercism in Elixir (0) | 2022.04.20 |