put_in([:attr1], "how are you") |> put_in-6ren">
gpt4 book ai didi

elixir - 是否可以通过管道对结构进行 `put_in` 调用?

转载 作者:行者123 更新时间:2023-12-01 13:46:48 25 4
gpt4 key购买 nike

给定一张 map ,可以这样写:

mymap
|> put_in([:foo, :bar], "hello")
|> put_in([:attr1], "how are you")
|> put_in([:attr2], "goodbye")

理想情况下,我可以对结构做同样的事情:

mystruct
|> put_in(.foo.bar, "hello")
|> put_in(.attr1, "how are you")
|> put_in(.attr2, "goodbye")

这样的事情可能吗?目前我正在写:

mystruct = put_in(mystruct.foo.bar, "hello")
mystruct = put_in(mystruct.attr1, "how are you")
put_in(mystruct.attr, "goodbye")

它可以完成工作,但不如使用管道运算符优雅。

最佳答案

实际上,您可以将 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")

关于elixir - 是否可以通过管道对结构进行 `put_in` 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35375391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com