给定一张地图,可以这样写:
mymap
|> put_in([:foo, :bar], "hello")
|> put_in([:attr1], "how are you")
|> put_in([:attr2], "goodbye")
Run Code Online (Sandbox Code Playgroud)
理想情况下,我能够对结构执行相同的操作:
mystruct
|> put_in(.foo.bar, "hello")
|> put_in(.attr1, "how are you")
|> put_in(.attr2, "goodbye")
Run Code Online (Sandbox Code Playgroud)
这样的事情可能吗?目前我正在写:
mystruct = put_in(mystruct.foo.bar, "hello")
mystruct = put_in(mystruct.attr1, "how are you")
put_in(mystruct.attr, "goodbye")
Run Code Online (Sandbox Code Playgroud)
它可以完成工作,但不如使用管道运算符那么优雅。
小智 5
实际上,您可以put_in与结构一起使用。这就是你想要的,对于以后偶然发现这一点的任何人:
mymap
|> put_in([:foo, :bar] |> Enum.map(&Access.key/1), "hello")
|> put_in([Access.key(:attr1)], "how are you")
|> put_in([Access.key(:attr2)], "goodbye")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1341 次 |
| 最近记录: |