📜  Elixir-可枚举(1)

📅  最后修改于: 2023-12-03 15:14:51.720000             🧑  作者: Mango

Elixir 可枚举 (Enumerable)

Elixir 可枚举 (Enumerable) 是一个非常有用的模块,它提供了一系列函数,让你能够处理集合的元素,例如列表、元组、映射等。

通过这个模块,你可以轻松地过滤、映射、排序、计数甚至分组等操作集合。

下面是一些最常用的函数。

遍历集合

要遍历一个集合,最基本的方式就是使用 Enum.each/2 函数。

它接受集合和一个函数参数,该函数将在集合中的每个元素上执行。返回值总是 :ok

list = [1, 2, 3]
Enum.each(list, fn x -> IO.puts(x) end)

该代码将输出:

1
2
3
过滤

如果你需要从集合中过滤掉一些元素,可以使用 Enum.filter/2 函数。

它接受集合和一个过滤函数参数,该函数将在集合中的每个元素上执行。只有该函数返回 true,才将该元素包含在结果中。

list = [1, 2, 3, 4, 5]
Enum.filter(list, fn x -> rem(x, 2) == 0 end)

该代码将返回:

[2, 4]
映射

如果你需要对集合中的每个元素进行相同的操作,可以使用 Enum.map/2 函数。

它接受集合和一个函数参数,该函数将在集合中的每个元素上执行。函数返回的值将被用于生成结果集合。

list = [1, 2, 3]
Enum.map(list, fn x -> x * 2 end)

该代码将返回:

[2, 4, 6]
排序

如果你需要对集合中的元素进行排序,可以使用 Enum.sort/1 函数。

它接受一个集合,并返回一个新的排序后的集合。

list = [3, 1, 2]
Enum.sort(list)

该代码将返回:

[1, 2, 3]
计数

如果你需要计算集合中元素的数量,可以使用 Enum.count/1 函数。

它接受一个集合,并返回集合中元素的数量。

list = [1, 2, 3]
Enum.count(list)

该代码将返回:

3
分组

如果你需要根据某些标准将集合中的元素进行分组,可以使用 Enum.group_by/2 函数。

它接受一个集合和一个分组函数参数,该函数将在集合中的每个元素上执行。函数返回的结果将用作分组关键字。

list = [1, 2, 3, 4, 5]
Enum.group_by(list, fn x -> rem(x, 2) end)

该代码将返回:

%{0 => [2, 4], 1 => [1, 3, 5]}

以上是一些最常用的可枚举函数,但实际上, Enumerable 模块提供了很多其他非常有用的函数,可以更好地管理集合。

参考链接:Enumerable - Elixir