@@ -555,24 +555,138 @@ end
555
555
函数
556
556
------
557
557
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
+
558
671
### 匿名函数
559
- >
560
- > 使用 fn 和 end 关键字来定义匿名函数,在这两者之间,可以定义任意数量的参数和函数体,它们用 -> 分隔开。
561
672
562
673
``` elixir
563
674
iex> sum = fn (a, b) - > a + b end
564
675
iex> sum .(2 , 3 )
565
676
5
677
+ ```
566
678
567
- # 可以使用 & 语法来简化匿名函数的定义:
679
+ 可以使用 & 语法来简化匿名函数的定义:
680
+
681
+ ``` elixir
568
682
iex> sum = & (&1 + &2 )
569
683
iex> sum .(2 , 3 )
570
684
5
571
685
```
572
686
573
687
### 闭包
574
- >
575
- > 匿名函数去引用外部的变量,这通常被称为闭包。
688
+
689
+ 匿名函数去引用外部的变量,这通常被称为闭包。
576
690
577
691
``` elixir
578
692
iex> double = fn a -> add .(a, a) end
@@ -581,7 +695,7 @@ double.(2)
581
695
4
582
696
```
583
697
584
- > 闭包与守卫
698
+ 闭包与守卫
585
699
586
700
``` elixir
587
701
iex> f = fn
@@ -596,8 +710,8 @@ iex> f.(-1, 3)
596
710
```
597
711
598
712
### 命名函数
599
- >
600
- > 命名函数是通过 def 关键字定义在某个模块中
713
+
714
+ 命名函数是通过 def 关键字定义在某个模块中
601
715
602
716
``` elixir
603
717
defmodule Greeter do
@@ -608,20 +722,27 @@ end
608
722
609
723
iex> Greeter .hello (" Sean" )
610
724
" Hello, Sean"
725
+ ```
611
726
612
- # 简写为一行:
727
+ 简写为一行:
728
+
729
+ ``` elixir
613
730
defmodule Greeter do
614
731
def hello (name), do: " Hello, " <> name
615
732
end
733
+ ```
616
734
617
- # 私有函数
735
+ 私有函数
736
+
737
+ ``` elixir
618
738
defmodule Greeter do
619
739
def hello (name), do: phrase <> name
620
- defp phrase , do: " Hello, " # 使用defp来定义私有函数
740
+ # 使用defp来定义私有函数
741
+ defp phrase , do: " Hello, "
621
742
end
622
743
```
623
744
624
- > 函数的默认参数:使用` \\ ` 来定义默认参数
745
+ 函数的默认参数:使用 ` \\ ` 来定义默认参数
625
746
626
747
``` elixir
627
748
defmodule Greeter do
0 commit comments