elixir - 在嵌套放大器中按索引获取项目

fay*_*fay 2 elixir

我有这样的结构:

map =  %{"a" => "foo",
         "b" => [%{"b1" => "bar",
                   "b2" => "baz"}]}
Run Code Online (Sandbox Code Playgroud)

我想要的是:

map.b[0].b1
Run Code Online (Sandbox Code Playgroud)

获得它的最简单方法是什么?
有没有办法使用它kernerl.get_in/2

Paw*_*zak 5

是的,可以使用Kernel.get_in/2和组合Access.at/1:

map =  %{"a" => "foo",
         "b" => [%{"b1" => "bar",
                   "b2" => "baz"}]}

get_in(map, ["b", Access.at(0), "b1"])

# => "bar"
Run Code Online (Sandbox Code Playgroud)