替换长生不老药中的数组中的物品

假设我有一张看起来像这样的地图

一个组织具有一组属性,而这些属性具有一组“ 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进行匹配的访问令牌,并将其替换为具有新名称的新令牌。

我有一些回旋的方式来做到这一点,但是在Elixir中这样做是一种干净的方式。

cuterose 回答:替换长生不老药中的数组中的物品

您无需进行迭代,只需使用AccessAccess.filter/1Access.all/0

put_in(
  organization,[:properties,Access.all(),:access_tokens,Access.filter(&match?(%{id: "at-3"},&1)),:name],"new_name")

我一直想知道,这门语言中最强大的功能之一是如何被低估了。

本文链接:https://www.f2er.com/3116144.html

大家都在问