gpt4 book ai didi

elixir - Dict.merge 已弃用,将关键字列表与 map 合并的最简单方法是什么?

转载 作者:行者123 更新时间:2023-12-02 06:25:19 26 4
gpt4 key购买 nike

从 Elixir v1.2 开始,Dict 模块已被软弃用。我们现在是 1.4,它会发出警告:

Dict.merge/2 is deprecated, use the Map module for working with maps or the Keyword module for working with keyword lists

Dict.merge 过去的工作方式如下:

iex(1)> animals_keyword_list = [cats: 2, dogs: 1]
[cats: 2, dogs: 1]
iex(2)> animals_map = %{cats: 3, rabbits: 1}
%{cats: 3, rabbits: 1}
iex(3)> Dict.merge(animals_map, animals_keyword_list)
%{cats: 2, dogs: 1, rabbits: 1}

处理简单关键字列表 -> map 合并的最佳方法是什么?

最佳答案

MapKeyword都实现了EnumerableCollectable协议(protocol),所以我们可以使用Enum .into/2:

iex(4)> animals_keyword_list |> Enum.into(animals_map)
%{cats: 2, dogs: 1, rabbits: 1}

请注意,此解决方案要求您感到高兴的是,如果关键字列表中存在重复的键,则声明的最后一个将覆盖任何先前的键,因为 map 不能有重复的键。当您执行相反操作并将映射合并到关键字列表中时,您可以看到这一点,该列表可以支持重复键:

iex(5)> animals_map |> Enum.into(animals_keyword_list)
[cats: 2, dogs: 1, cats: 3, rabbits: 1]

关于elixir - Dict.merge 已弃用,将关键字列表与 map 合并的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41650632/

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