34 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			34 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | title: Enumerables | |||
|  | localeTitle: 枚举 | |||
|  | --- | |||
|  | ## 可枚举(枚举)
 | |||
|  | 
 | |||
|  | 在面向对象的编程语言中,你将使用“循环”在Elixir上对一段数据执行相同的操作,因为变量是不可变的,它不可能创建一个传统循环,而是Elixir和其他函数式编程语言依靠递归。使用递归,您将对列表中的每个项目执行相同的操作,而无需变更变量。 Elixir内置的Enum库使这很容易。 | |||
|  | 
 | |||
|  | ## 例
 | |||
|  | 
 | |||
|  | 使用`Enum.map`您可以运行匿名函数(不在模块内部的函数)传递列表中的每个项目。这完成了与传统循环相同的任务,而无需改变累加器变量。 | |||
|  | 
 | |||
|  | ```elixir | |||
|  | iex> Enum.map([1, 2, 3], fn(x) -> x * 2 end)  | |||
|  |  [2, 4, 6]  | |||
|  | ``` | |||
|  | 
 | |||
|  | ## 枚举模块中的方法
 | |||
|  | 
 | |||
|  | Enum模块有超过70种不同的功能可用于Enumerables,在这里列出它们将需要几页。相反,让我们看一下Enum模块中最常用的功能。 | |||
|  | 
 | |||
|  | ### Enum.map
 | |||
|  | 
 | |||
|  | `Enum.map`在列表上运行匿名或捕获的函数。 | |||
|  | 
 | |||
|  | ```elixir | |||
|  | iex> Enum.map([5, 10, 15, 20], fn(x) -> x * 2 end)  | |||
|  |  [10, 20, 30, 40]  | |||
|  | ``` | |||
|  | 
 | |||
|  | #### 更多信息:
 | |||
|  | 
 | |||
|  | *   [elixir-lang.org |递归](https://elixir-lang.org/getting-started/enumerables-and-streams.html) | |||
|  | *   [hexdocs |枚举](https://hexdocs.pm/elixir/Enum.html) |