本文介绍了药剂不使用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 在枚举之外。也可能称为 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中的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-15 16:18