Как передать вложенный ключ на карту как переменную? - PullRequest
0 голосов
/ 05 мая 2018

У меня есть карта и ключ. Когда ключ представляет собой простой литерал, такой как строка или атом, я могу извлечь значение из карты - это просто.

Как я могу получить вложенное значение с карты: как создать такой вложенный ключ и передать его на карту?

Примерно так:

my_map = %{a: 1, b: %{c: 234}}

my_nest_key = ?????

my_nest_val = my_map[my_nest_key]
# ===> 234

1 Ответ

0 голосов
/ 05 мая 2018

Возможно, вот так?

iex> my_map = %{a: 1, b: %{c: 234}}
...> my_nest_key = "b.c"
...> keys = my_nest_key |> String.split(".") |> Enum.map(&String.to_existing_atom/1)
[:b, :c]
...> get_in(my_map, keys)
234

https://hexdocs.pm/elixir/String.html#to_existing_atom/1

...