当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Elixir MapSet用法及代码示例


Elixir语言中 MapSet 相关用法介绍如下。

适用于集合的函数。

集合是一种数据结构,可以包含任何类型的唯一元素,没有任何特定顺序。 MapSet 是 Elixir 中的 "go to" 集合数据结构。

可以使用 MapSet.new/0 构造一个集合:

iex> MapSet.new()
#MapSet<[]>

集合中的元素不必是同一类型,它们可以使用 MapSet.new/1 enumerable 填充:

iex> MapSet.new([1, :two, {"three"}])
#MapSet<[1, :two, {"three"}]>

可以使用 MapSet.put/2 插入元素:

iex> MapSet.new([2]) |> MapSet.put(4) |> MapSet.put(0)
#MapSet<[0, 2, 4]>

根据定义,集合不能包含重复的元素:当在集合中插入一个元素时,它已经存在,插入只是一个no-op。

iex> map_set = MapSet.new()
iex> MapSet.put(map_set, "foo")
#MapSet<["foo"]>
iex> map_set |> MapSet.put("foo") |> MapSet.put("foo")
#MapSet<["foo"]>

MapSet 在内部使用 %MapSet{} 结构表示。只要需要对 MapSet 进行模式匹配,就可以使用此结构:

iex> match?(%MapSet{}, MapSet.new())
true

但是请注意,结构字段是私有的,不能直接访问;使用此模块中的函数对集合执行操作。

MapSet s 也可以从其他 collection-type 数据结构开始构造:例如,参见 MapSet.new/1 Enum.into/2

MapSet 建立在 Map 之上,这意味着它们共享许多属性,包括对数时间复杂度。有关其执行时间复杂度的更多信息,请参阅 Map 的文档。

相关用法


注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 MapSet。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。