當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。