如何将嵌套键作为变量传递给地图?

时间:2018-05-05 08:46:36

标签: elixir

我有一张地图和一把钥匙。当一个键是一个简单的文字,如字符串或原子,我可以从地图中检索一个值 - 它很简单。

如何从地图中检索嵌套值:如何创建这样的嵌套键并将其传递给地图?

这样的事情:

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

my_nest_key = ?????

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

1 个答案:

答案 0 :(得分:0)

也许是这样的?

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