Skip to content

Commit a3ffdd1

Browse files
committed
doc: update docs/elixir.md #587
1 parent b880c23 commit a3ffdd1

File tree

1 file changed

+133
-12
lines changed

1 file changed

+133
-12
lines changed

Diff for: docs/elixir.md

+133-12
Original file line numberDiff line numberDiff line change
@@ -555,24 +555,138 @@ end
555555
函数
556556
------
557557

558+
### 函数定义
559+
560+
```elixir
561+
def function_name(param1, param2) do
562+
# 函数体
563+
end
564+
```
565+
566+
示例:
567+
568+
```elixir
569+
def sum(a, b) do
570+
a + b
571+
end
572+
```
573+
574+
### 模式匹配的多个函数定义
575+
<!--rehype:wrap-class=row-span-2-->
576+
577+
```elixir
578+
def fun_name(:atom) do
579+
# 对于 :atom 的处理
580+
end
581+
582+
def fun_name("string") do
583+
# 对于 "string" 的处理
584+
end
585+
586+
def fun_name(number) when is_integer(number) do
587+
# 对于整数的处理
588+
end
589+
```
590+
591+
示例:
592+
593+
```elixir
594+
def is_positive(number) when number > 0 do
595+
true
596+
end
597+
598+
def is_positive(_), do: false
599+
```
600+
601+
### 函数调用
602+
603+
```elixir
604+
module_name.function_name(arg1, arg2)
605+
```
606+
607+
示例:
608+
609+
```elixir
610+
Enum.map([1, 2, 3], &(&1 * 2))
611+
```
612+
613+
### 函数参数默认值
614+
615+
```elixir
616+
def function_name(parameter \\ 默认值) do
617+
# 函数体
618+
end
619+
```
620+
621+
示例:
622+
623+
```elixir
624+
def greet(name \\ "World") do
625+
"Hello, #{name}!"
626+
end
627+
```
628+
629+
### 可变参数数量
630+
631+
```elixir
632+
def function_name(param1, param2 \\ []) do
633+
# 函数体
634+
end
635+
```
636+
637+
示例:
638+
639+
```elixir
640+
def sum(numbers) do
641+
Enum.sum(numbers)
642+
end
643+
```
644+
645+
### 函数文档注释
646+
647+
```elixir
648+
@doc """
649+
这是函数的文档。
650+
"""
651+
```
652+
653+
示例:
654+
655+
```elixir
656+
@doc """
657+
Adds two numbers together.
658+
659+
## 示例
660+
661+
iex> MyModule.add(1, 2)
662+
3
663+
"""
664+
def add(a, b) do
665+
a + b
666+
end
667+
```
668+
669+
这些是 Elixir 函数语法的基本要点,可以帮助你开始编写函数。
670+
558671
### 匿名函数
559-
>
560-
> 使用 fn 和 end 关键字来定义匿名函数,在这两者之间,可以定义任意数量的参数和函数体,它们用 -> 分隔开。
561672

562673
```elixir
563674
iex> sum = fn (a, b) -> a + b end
564675
iex> sum.(2, 3)
565676
5
677+
```
566678

567-
# 可以使用 & 语法来简化匿名函数的定义:
679+
可以使用 & 语法来简化匿名函数的定义:
680+
681+
```elixir
568682
iex> sum = &(&1 + &2)
569683
iex> sum.(2, 3)
570684
5
571685
```
572686

573687
### 闭包
574-
>
575-
> 匿名函数去引用外部的变量,这通常被称为闭包。
688+
689+
匿名函数去引用外部的变量,这通常被称为闭包。
576690

577691
```elixir
578692
iex> double = fn a -> add.(a, a) end
@@ -581,7 +695,7 @@ double.(2)
581695
4
582696
```
583697

584-
> 闭包与守卫
698+
闭包与守卫
585699

586700
```elixir
587701
iex> f = fn
@@ -596,8 +710,8 @@ iex> f.(-1, 3)
596710
```
597711

598712
### 命名函数
599-
>
600-
> 命名函数是通过 def 关键字定义在某个模块中
713+
714+
命名函数是通过 def 关键字定义在某个模块中
601715

602716
```elixir
603717
defmodule Greeter do
@@ -608,20 +722,27 @@ end
608722

609723
iex> Greeter.hello("Sean")
610724
"Hello, Sean"
725+
```
611726

612-
# 简写为一行:
727+
简写为一行:
728+
729+
```elixir
613730
defmodule Greeter do
614731
def hello(name), do: "Hello, " <> name
615732
end
733+
```
616734

617-
# 私有函数
735+
私有函数
736+
737+
```elixir
618738
defmodule Greeter do
619739
def hello(name), do: phrase <> name
620-
defp phrase, do: "Hello, " # 使用defp来定义私有函数
740+
# 使用defp来定义私有函数
741+
defp phrase, do: "Hello, "
621742
end
622743
```
623744

624-
> 函数的默认参数:使用`\\`来定义默认参数
745+
函数的默认参数:使用 `\\` 来定义默认参数
625746

626747
```elixir
627748
defmodule Greeter do

0 commit comments

Comments
 (0)