所以我想说我有以下结构:
%Car{details: [%CarDetail{prices: [%Price{euro: 5}]}]}
Run Code Online (Sandbox Code Playgroud)
我想在汽车细节的价格清单中添加另一个价格结构,我该怎么做?
显然,真正的例子是更深的,所以我不能使用模式匹配,我不能想出一种使用方式put_in/3或类似的东西.
一些帮助将不胜感激.谢谢.
Pat*_*ity 10
您可以使用Kernel.update_in/3遍历嵌套结构.通过简单地传递密钥列表将无法工作update_in,因为结构和列表都不实现访问协议.这是Access.key!/1和Access.all进来的.要知道,虽然,那下面的代码段将价格加到所有车的细节,应该有不止一个.如果只需更新特定详细信息,则可以使用Access.at/1或实现自己的访问功能.
update_in car, [Access.key!(:details), Access.all, Access.key!(:prices)], fn(prices) ->
[%Price{euro: 12345} | prices]
end
Run Code Online (Sandbox Code Playgroud)