假设我有一张像这样的地图
一个组织有一个属性数组,属性有一个"access_tokens“数组。
organization = %{
name: "Org",
properties: [
%{
name: "prop1",
access_tokens: [%{id: "at-1", name: "one-1"}, %{id: "at-2", name: "one-2"}]
},
%{
name: "prop2",
access_tokens: [%{id: "at-3", name: "two-1"}, %{id: "at-4", name: "two-2"}]
}
]
}现在我有了这个映射,对于一个特定的访问令牌,这个id与第二个属性的一个访问令牌匹配:
access_token = %{id: "at-3", name: "new name"}使用新的访问令牌迭代更新organization%{}映射的最佳方法是什么?我想要做的是找到基于id的访问令牌,并将其替换为具有新名称的新令牌。
我有一些周全的方法来做这件事,但是在长生不老药中,有什么方法可以做到这一点呢?
发布于 2019-11-12 16:04:14
您不需要迭代,只需使用Access、Access.filter/1和Access.all/0
put_in(
organization,
[:properties,
Access.all(),
:access_tokens,
Access.filter(&match?(%{id: "at-3"}, &1)),
:name],
"new_name")我一直在想,语言中最强大的东西之一怎么会被低估呢?
https://stackoverflow.com/questions/58822023
复制相似问题