get_in在灵药
问题描述:
嵌套列表与结构我有一个结构get_in在灵药
s = [
a: %Bla{
b: "c"
}
]
我想从它采取c
值。我正在尝试做
get_in(s, [:a, :b])
但它的目的不是为了从结构中获取价值。有没有什么模拟可以让我从嵌套结构的列表中获取c
?
答
由于documented,get_in
默认情况下不与结构的工作:
的Access语法(富[巴])不能被用来在结构接入领域,由于结构不实现默认访问行为。这也是设计决策:动态访问查找用于动态键值结构,如地图和关键字,而不是像结构体那样的静态键值结构。
有两种方法可以实现你想要什么:
实现
Access
协议的结构。使用Access.key(:foo)
代替:foo
。
我会使用(2):
iex(1)> defmodule Bla do
...(1)> defstruct [:b]
...(1)> end
iex(2)> s = [a: %Bla{b: "c"}]
[a: %Bla{b: "c"}]
iex(3)> get_in(s, [:a, Access.key(:b)])
"c"
'get_in(S,[:一,:B])#=> “C”'我。 – Dogbert
废话!让我调查为什么它不能在我身边 – asiniy
@Dogbert更新了这个问题。结构很重要! – asiniy