doc: update docs/elixir.md #587
This commit is contained in:
		
							
								
								
									
										145
									
								
								docs/elixir.md
									
									
									
									
									
								
							
							
						
						
									
										145
									
								
								docs/elixir.md
									
									
									
									
									
								
							@@ -555,24 +555,138 @@ end
 | 
				
			|||||||
函数
 | 
					函数
 | 
				
			||||||
------
 | 
					------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 函数定义
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```elixir
 | 
				
			||||||
 | 
					def function_name(param1, param2) do
 | 
				
			||||||
 | 
					  # 函数体
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					示例:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```elixir
 | 
				
			||||||
 | 
					def sum(a, b) do
 | 
				
			||||||
 | 
					  a + b
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 模式匹配的多个函数定义
 | 
				
			||||||
 | 
					<!--rehype:wrap-class=row-span-2-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```elixir
 | 
				
			||||||
 | 
					def fun_name(:atom) do
 | 
				
			||||||
 | 
					  # 对于 :atom 的处理
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def fun_name("string") do
 | 
				
			||||||
 | 
					  # 对于 "string" 的处理
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def fun_name(number) when is_integer(number) do
 | 
				
			||||||
 | 
					  # 对于整数的处理
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					示例:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```elixir
 | 
				
			||||||
 | 
					def is_positive(number) when number > 0 do
 | 
				
			||||||
 | 
					  true
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def is_positive(_), do: false
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 函数调用
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```elixir
 | 
				
			||||||
 | 
					module_name.function_name(arg1, arg2)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					示例:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```elixir
 | 
				
			||||||
 | 
					Enum.map([1, 2, 3], &(&1 * 2))
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 函数参数默认值
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```elixir
 | 
				
			||||||
 | 
					def function_name(parameter \\ 默认值) do
 | 
				
			||||||
 | 
					  # 函数体
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					示例:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```elixir
 | 
				
			||||||
 | 
					def greet(name \\ "World") do
 | 
				
			||||||
 | 
					  "Hello, #{name}!"
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 可变参数数量
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```elixir
 | 
				
			||||||
 | 
					def function_name(param1, param2 \\ []) do
 | 
				
			||||||
 | 
					  # 函数体
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					示例:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```elixir
 | 
				
			||||||
 | 
					def sum(numbers) do
 | 
				
			||||||
 | 
					  Enum.sum(numbers)
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 函数文档注释
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```elixir
 | 
				
			||||||
 | 
					@doc """
 | 
				
			||||||
 | 
					这是函数的文档。
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					示例:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```elixir
 | 
				
			||||||
 | 
					@doc """
 | 
				
			||||||
 | 
					Adds two numbers together.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 示例
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    iex> MyModule.add(1, 2)
 | 
				
			||||||
 | 
					    3
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					def add(a, b) do
 | 
				
			||||||
 | 
					  a + b
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					这些是 Elixir 函数语法的基本要点,可以帮助你开始编写函数。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 匿名函数
 | 
					### 匿名函数
 | 
				
			||||||
>
 | 
					 | 
				
			||||||
> 使用 fn 和 end 关键字来定义匿名函数,在这两者之间,可以定义任意数量的参数和函数体,它们用 -> 分隔开。
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
```elixir
 | 
					```elixir
 | 
				
			||||||
iex> sum = fn (a, b) -> a + b end
 | 
					iex> sum = fn (a, b) -> a + b end
 | 
				
			||||||
iex> sum.(2, 3)
 | 
					iex> sum.(2, 3)
 | 
				
			||||||
5
 | 
					5
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# 可以使用 & 语法来简化匿名函数的定义:
 | 
					可以使用 & 语法来简化匿名函数的定义:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```elixir
 | 
				
			||||||
iex> sum = &(&1 + &2)
 | 
					iex> sum = &(&1 + &2)
 | 
				
			||||||
iex> sum.(2, 3)
 | 
					iex> sum.(2, 3)
 | 
				
			||||||
5
 | 
					5
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 闭包
 | 
					### 闭包
 | 
				
			||||||
>
 | 
					
 | 
				
			||||||
> 匿名函数去引用外部的变量,这通常被称为闭包。
 | 
					匿名函数去引用外部的变量,这通常被称为闭包。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```elixir
 | 
					```elixir
 | 
				
			||||||
iex> double = fn a -> add.(a, a) end
 | 
					iex> double = fn a -> add.(a, a) end
 | 
				
			||||||
@@ -581,7 +695,7 @@ double.(2)
 | 
				
			|||||||
4
 | 
					4
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
> 闭包与守卫
 | 
					闭包与守卫
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```elixir
 | 
					```elixir
 | 
				
			||||||
iex> f = fn
 | 
					iex> f = fn
 | 
				
			||||||
@@ -596,8 +710,8 @@ iex> f.(-1, 3)
 | 
				
			|||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 命名函数
 | 
					### 命名函数
 | 
				
			||||||
>
 | 
					
 | 
				
			||||||
> 命名函数是通过 def 关键字定义在某个模块中
 | 
					命名函数是通过 def 关键字定义在某个模块中
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```elixir
 | 
					```elixir
 | 
				
			||||||
defmodule Greeter do
 | 
					defmodule Greeter do
 | 
				
			||||||
@@ -608,20 +722,27 @@ end
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
iex> Greeter.hello("Sean")
 | 
					iex> Greeter.hello("Sean")
 | 
				
			||||||
"Hello, Sean"
 | 
					"Hello, Sean"
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# 简写为一行:
 | 
					简写为一行:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```elixir
 | 
				
			||||||
defmodule Greeter do
 | 
					defmodule Greeter do
 | 
				
			||||||
  def hello(name), do: "Hello, " <> name
 | 
					  def hello(name), do: "Hello, " <> name
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# 私有函数
 | 
					私有函数
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```elixir
 | 
				
			||||||
defmodule Greeter do
 | 
					defmodule Greeter do
 | 
				
			||||||
  def hello(name), do: phrase <> name
 | 
					  def hello(name), do: phrase <> name
 | 
				
			||||||
  defp phrase, do: "Hello, " # 使用defp来定义私有函数
 | 
					  # 使用defp来定义私有函数
 | 
				
			||||||
 | 
					  defp phrase, do: "Hello, " 
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
> 函数的默认参数:使用`\\`来定义默认参数
 | 
					函数的默认参数:使用 `\\` 来定义默认参数
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```elixir
 | 
					```elixir
 | 
				
			||||||
defmodule Greeter do
 | 
					defmodule Greeter do
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user