当前位置:  开发笔记 > 编程语言 > 正文

不推荐使用Dict.merge,将关键字列表与Map合并的最简单方法是什么?

如何解决《不推荐使用Dict.merge,将关键字列表与Map合并的最简单方法是什么?》经验,为你挑选了1个好方法。

Dict从Elixir v1.2开始,该模块已被软推弃.我们现在处于1.4,它引发了警告:

不推荐使用Dict.merge/2,使用Map模块处理地图或使用Keyword模块处理关键字列表

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}

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



1> Darian Moody..:

双方MapKeyword落实EnumerableCollectable协议,因此我们可以使用Enum.into/2:

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

请注意,此解决方案要求您高兴的是,如果关键字列表中存在重复的键,则声明的最后一个键将覆盖任何先前的键,因为Maps不能具有重复键.当您反过来并将Map合并到关键字列表中时,您可以看到这一点,该关键字列表可以支持重复键:

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

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有