Elixir語言中 Enum
相關用法介紹如下。
提供一組算法來處理枚舉。
在 Elixir 中,可枚舉是實現
協議的任何數據類型。 Enumerable
s ( List
[1, 2, 3]
)、
s ( Map
%{foo: 1, bar: 2}
) 和
s ( Range
1..3
) 是用作可枚舉的常用數據類型:
iex> Enum.map([1, 2, 3], fn x -> x * 2 end)
[2, 4, 6]
iex> Enum.sum([1, 2, 3])
6
iex> Enum.map(1..3, fn x -> x * 2 end)
[2, 4, 6]
iex> Enum.sum(1..3)
6
iex> map = %{"a" => 1, "b" => 2}
iex> Enum.map(map, fn {k, v} -> {k, v * 2} end)
[{"a", 2}, {"b", 4}]
但是,該語言中存在許多其他可枚舉項,例如
s 和 MapSet
返回的數據類型,它允許像遍曆文件一樣遍曆文件。File.stream!/3
該模塊中的函數以線性時間工作。這意味著,執行操作所需的時間與可枚舉的長度以相同的速度增長。這在諸如
之類的操作中是預期的。畢竟,如果我們要遍曆列表中的每一個元素,列表越長,我們需要遍曆的元素越多,需要的時間也就越長。Enum.map/2
這種線性行為也應該出現在
、 count/1
、 member?/2
等類似操作上。盡管 Elixir 確實允許數據類型為此類操作提供高性能變體,但您不應期望它始終可用,因為 at/2
模塊旨在處理多種數據類型,並非所有數據類型都可以提供優化的行為.Enum
最後,請注意
模塊中的函數是即刻的:它們一被調用就會遍曆枚舉。這在使用無限枚舉時尤其危險。在這種情況下,您應該使用 Enum
模塊,它允許您延遲表達計算,而不需要遍曆集合,並且可以使用可能無限的集合。有關示例和文檔,請參閱Stream
模塊。Stream
相關用法
- Elixir Enum.unzip用法及代碼示例
- Elixir Enum.min_max用法及代碼示例
- Elixir Enum.reduce_while用法及代碼示例
- Elixir Enum.at用法及代碼示例
- Elixir Enum.split_with用法及代碼示例
- Elixir Enum.dedup用法及代碼示例
- Elixir Enum.sum用法及代碼示例
- Elixir Enum.zip用法及代碼示例
- Elixir Enum.find_value用法及代碼示例
- Elixir Enum.product用法及代碼示例
- Elixir Enum.map_join用法及代碼示例
- Elixir Enum.zip_with用法及代碼示例
- Elixir Enum.intersperse用法及代碼示例
- Elixir Enum.flat_map用法及代碼示例
- Elixir Enum.count用法及代碼示例
- Elixir Enum.fetch用法及代碼示例
- Elixir Enum.frequencies用法及代碼示例
- Elixir Enum.drop用法及代碼示例
- Elixir Enum.slice用法及代碼示例
- Elixir Enum.max_by用法及代碼示例
- Elixir Enum.zip_reduce用法及代碼示例
- Elixir Enum.random用法及代碼示例
- Elixir Enum.empty?用法及代碼示例
- Elixir Enum.take_while用法及代碼示例
- Elixir Enum.find用法及代碼示例
注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 Enum。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。