本文介绍了药剂不使用enum.each更新mapset中的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
map_set = MapSet.new()
Enum.each(filtered_list, fn x -> map_set = MapSet.put(MapSet.new(map_set),x)
这里的filtered_list是一个包含字符串的列表,但是当我打印map_set时,它是
Here filtered_list is a list containing string but when I am printing map_set it is returning an empty set. Why?
推荐答案
您的代码与此等效:
Your code is equivalent to this this:
map_set = MapSet.new()
Enum.each(filtered_list, fn x ->
other = MapSet.put(MapSet.new(map_set), x)
end)
您在枚举内分配的 map_set
是局部变量,与 map_set $不相关c $ c>在枚举之外。也可能称为
other
,因为您要舍弃变量。Elixir是一种不可变的语言,因此您需要分配结果可枚举到 map_set
。
The map_set
you assign to inside the enum is a local variable, it's not related to the map_set
outside the enum. It may as well be called other
, because you are discarding the variable. Elixir is an immutable language, so you need to assign the result of the enumerable to map_set
.
如果您只想要将列表转换为集合,只需执行以下操作:
If you just want to convert a list to a set, you can simply do:
MapSet.new(filtered_list)
这篇关于药剂不使用enum.each更新mapset中的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!