首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MapSet

在集合上工作的函数。

MapSet是Elixir中的“去”设置数据结构。一组可以使用MapSet.new/0

代码语言:javascript
复制
iex> MapSet.new
#MapSet<[]>

一个集合可以包含任何类型的元素,并且集合中的元素不必具有相同的类型。根据定义,集合不能包含重复的元素:在已经存在的集合中插入一个元素时,插入仅仅是一个无操作。

代码语言:javascript
复制
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

代码语言:javascript
复制
iex> match?(%MapSet{}, MapSet.new())
true

但请注意,struct字段是私有的,不能直接访问; 使用本模块中的功能来对组执行操作。

MapSets也可以从其他集合类型的数据结构开始构造:例如参见MapSet.new/1Enum.into/2

类型

t()t(value)value()

功能

delete(map_set, value)

删除valuemap_set

difference(map_set1, map_set2)

返回一组map_set1没有成员map_set2

disjoint?(map_set1, map_set2)

检查map_set1map_set2没有共同的成员

equal?(map_set1, map_set2)

检查两个集合是否相等

intersection(map_set, map_set)

返回一个仅包含以下成员的集合map_set1map_set2有共同之处

member?(map_set, value)

检查map_setvalue

new()

返回一个新集。

new(enumerable)

从可枚举的

new(enumerable, transform)

通过转换函数从可枚举的集合创建集合。

put(map_set, value)

插入valuemap_setif map_set不包含它

size(map_set)

中的元素数。map_set

subset?(map_set1, map_set2)

检查map_set1其成员都包含在map_set2

to_list(map_set)

皈依map_set列到一张清单上

union(map_set1, map_set2)

返回包含map_set1map_set2

t()

代码语言:javascript
复制
t() :: t(term)

t(value)

代码语言:javascript
复制
t(value)

value()

代码语言:javascript
复制
value() :: term

delete(map_set, value)

代码语言:javascript
复制
delete(t(val1), val2) :: t(val1) when val1: value, val2: value

value从中删除map_set

返回一个新的集合,它是map_set没有的副本value

实例

代码语言:javascript
复制
iex> map_set = MapSet.new([1, 2, 3])
iex> MapSet.delete(map_set, 4)
#MapSet<[1, 2, 3]>
iex> MapSet.delete(map_set, 2)
#MapSet<[1, 3]>

difference(map_set1, map_set2)

代码语言:javascript
复制
difference(t(val1), t(val2)) :: t(val1) when val1: value, val2: value

返回一个map_set1没有成员的集合map_set2

实例

代码语言:javascript
复制
iex> MapSet.difference(MapSet.new([1, 2]), MapSet.new([2, 3, 4]))
#MapSet<[1]>

disjoint?(map_set1, map_set2)

代码语言:javascript
复制
disjoint?(t, t) :: boolean

检查map_set1map_set2没有共同的成员。

实例

代码语言:javascript
复制
iex> MapSet.disjoint?(MapSet.new([1, 2]), MapSet.new([3, 4]))
true
iex> MapSet.disjoint?(MapSet.new([1, 2]), MapSet.new([2, 3]))
false

equal?(map_set1, map_set2)

代码语言:javascript
复制
equal?(t, t) :: boolean

检查两组是否相等。

元素之间的比较必须使用===

实例

代码语言:javascript
复制
iex> MapSet.equal?(MapSet.new([1, 2]), MapSet.new([2, 1, 1]))
true
iex> MapSet.equal?(MapSet.new([1, 2]), MapSet.new([3, 4]))
false

intersection(map_set, map_set)

代码语言:javascript
复制
intersection(t(val), t(val)) :: t(val) when val: value

返回一个仅包含以下成员的集合map_set1map_set2有共同之处。

实例

代码语言:javascript
复制
iex> MapSet.intersection(MapSet.new([1, 2]), MapSet.new([2, 3, 4]))
#MapSet<[2]>

iex> MapSet.intersection(MapSet.new([1, 2]), MapSet.new([3, 4]))
#MapSet<[]>

member?(map_set, value)

代码语言:javascript
复制
member?(t, value) :: boolean

检查是否map_set包含value

实例

代码语言:javascript
复制
iex> MapSet.member?(MapSet.new([1, 2, 3]), 2)
true
iex> MapSet.member?(MapSet.new([1, 2, 3]), 4)
false

new()

代码语言:javascript
复制
new() :: t

返回一个新集。

实例

代码语言:javascript
复制
iex> MapSet.new
#MapSet<[]>

new(enumerable)

代码语言:javascript
复制
new(Enum.t) :: t

从可枚举的集合创建集合。

实例

代码语言:javascript
复制
iex> MapSet.new([:b, :a, 3])
#MapSet<[3, :a, :b]>
iex> MapSet.new([3, 3, 3, 2, 2, 1])
#MapSet<[1, 2, 3]>

new(enumerable, transform)

代码语言:javascript
复制
new(Enum.t, (term -> val)) :: t(val) when val: value

通过转换函数从可枚举的集合创建集合。

实例

代码语言:javascript
复制
iex> MapSet.new([1, 2, 1], fn x -> 2 * x end)
#MapSet<[2, 4]>

put(map_set, value)

代码语言:javascript
复制
put(t(val), new_val) :: t(val | new_val) when val: value, new_val: value

插入valuemap_setif map_set不包含它。

实例

代码语言:javascript
复制
iex> MapSet.put(MapSet.new([1, 2, 3]), 3)
#MapSet<[1, 2, 3]>
iex> MapSet.put(MapSet.new([1, 2, 3]), 4)
#MapSet<[1, 2, 3, 4]>

size(map_set)

代码语言:javascript
复制
size(t) :: non_neg_integer

返回中的元素数量map_set

实例

代码语言:javascript
复制
iex> MapSet.size(MapSet.new([1, 2, 3]))
3

subset?(map_set1, map_set2)

代码语言:javascript
复制
subset?(t, t) :: boolean

检查是否map_set1所有成员都包含在内map_set2

这个函数检查是否map_set1是一个子集map_set2

实例

代码语言:javascript
复制
iex> MapSet.subset?(MapSet.new([1, 2]), MapSet.new([1, 2, 3]))
true
iex> MapSet.subset?(MapSet.new([1, 2, 3]), MapSet.new([1, 2]))
false

to_list(map_set)

代码语言:javascript
复制
to_list(t(val)) :: [val] when val: value

皈依map_set一份清单。

实例

代码语言:javascript
复制
iex> MapSet.to_list(MapSet.new([1, 2, 3]))
[1, 2, 3]

union(map_set1, map_set2)

代码语言:javascript
复制
union(t(val1), t(val2)) :: t(val1 | val2) when val1: value, val2: value

返回一个包含所有成员的集合map_set1map_set2

实例

代码语言:javascript
复制
iex> MapSet.union(MapSet.new([1, 2]), MapSet.new([2, 3, 4]))
#MapSet<[1, 2, 3, 4]>

扫码关注腾讯云开发者

领取腾讯云代金券