Elixir - 地图结构上的模式匹配,而不是键

skw*_*eth 0 elixir

在Elixir中,我有一个嵌套映射列表,每个映射都有相同的基本结构 - 例如:

nested_map_list = [
    %{foo: %{test: "Hi"}},
    %{bar: %{test: "Hello"}},
    %{baz: %{test: "Hey"}}
]
Run Code Online (Sandbox Code Playgroud)

因此,它们在上层各有一个不同的键,但在嵌套映射中有相同的键.有没有办法可以迭代这个列表,以便每次迭代访问嵌套映射,而不管上层的键?

为了说明我的意思,请考虑这个伪代码:

Enum.each(nested_map_list, fn(%{_key: nested_data}) -> IO.puts nested_data.test end)

> "Hi"
> "Hello"
> "Hey"
Run Code Online (Sandbox Code Playgroud)

非常感谢!

Dog*_*ert 7

虽然其他答案都是正确的,但我for在这里使用和模式匹配如下:

iex(1)> nested_map_list = [
...(1)>   %{foo: %{test: "Hi"}},
...(1)>   %{bar: %{test: "Hello"}},
...(1)>   %{baz: %{test: "Hey"}}
...(1)> ]
iex(2)> for x <- nested_map_list, {_, %{test: test}} <- x, do: IO.puts(test)
Hi
Hello
Hey
Run Code Online (Sandbox Code Playgroud)