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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。