Elixir:从嵌套地图中删除值

时间:2019-01-23 02:08:51

标签: elixir

Elixir在Kernel中提供了一堆帮助函数,使您可以从嵌套的Map或实现Access的另一个结构中获取和更新值:

但是我找不到任何可以帮助我删除值的东西。我知道我可以将值更新为nil(或者只是通过获取嵌套映射来保持惰性) ,删除值并放入整个地图),但我希望有一个简单的班轮,实际上可以删除我可能错过的值。

1 个答案:

答案 0 :(得分:3)

稍作搜索后,我决定将其作为功能请求发布到官方的长生不老药邮件列表中,只是发现它has already been requested以及确实存在Kernel.pop_in/2,它在元组中返回删除的值和更新的地图:

pop_in(%{user: %{name: "John", age: 27}, [:user, :age])
# => {27, %{user: %{name: "John"}}

何塞没有单独的delete_in/2方法的原因:

  

之所以选择pop_in/2是因为它自己提供了比delete_in更多的功能,并且我们希望避免过多的功能使Kernel过载。如果您关注的是连锁,则弹出后始终可以执行a |> elem(1)