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).
11
-module(helloworld). -export([start/0]). start() -> Fn = fun() -> io:fwrite("Anonymous Function") end, 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