Erlang函数
定义函数
语法
FunctionName(Pattern1… PatternN) -> Body;
在这里,
-
FunctionName − 函数名称是一个原子(唯一性)
-
Pattern1… PatternN − 每个参数都是一个模式。参数的个数N是函数的参数数量。函数名称名称是由模块、函数名和定义的参数数量是唯一的。即,具有相同的名称并在相同的模块中的两个函数,但它们具有不同参数数量也算是两种不同的函数。
-
Body − 一个子句主体是由以逗号分隔的表达式序列组成 (,)
示例
-module(helloworld). -export([add/2,start/0]). add(X,Y) -> Z = X+Y, io:fwrite("~w~n",[Z]). start() -> add(5,6).
-
我们定义两个函数,一个函数为 add ,它需要 2 个参数,另一个函数是 start ;
-
这两个函数都使用 export 函数定义。如果我们不这样做那么将无法使用函数;
-
一个函数可以在另一个函数中调用。在这里 start 函数中将调用 add 函数;
11
匿名函数
示例
-module(helloworld). -export([start/0]). start() -> Fn = fun() -> io:fwrite("Anonymous Function") end, Fn().
-
匿名函数是使用 fun() 关键字定义的
-
该函数被分配给一个名为 Fn 的变量
-
该函数是通过变量名称来调用的
Anonymous Function
使用多个参数的函数
示例代码
-module(helloworld). -export([add/2,add/3,start/0]). add(X,Y) -> Z = X+Y, io:fwrite("~w~n",[Z]). add(X,Y,Z) -> A = X+Y+Z, io:fwrite("~w~n",[A]). start() -> add(5,6), add(5,6,6).
11
函数使用序列
FunctionName(Pattern1… PatternN) [when GuardSeq1]-> Body;
在这里,
-
FunctionName − 函数名称是一个原子(唯一性)
-
Pattern1… PatternN − 每个参数都是一个模式。参数的个数N是函数的参数数量。函数名称名称是由模块、函数名和定义的参数数量是唯一的。即,具有相同的名称并在相同的模块中的两个函数,但它们具有不同参数数量也算是两种不同的函数。
-
Body − 一个子句主体是由以逗号分隔的表达式序列组成 (,)
-
GuardSeq1 − 当函数被调用它获取计算的表达式。
示例代码
-module(helloworld). -export([add/1,start/0]). add(X) when X>3 -> io:fwrite("~w~n",[X]). start() -> add(4).
4
上一篇:Erlang case语句
下一篇:Erlang模块