Fun定义
也可以依据已经定义的函数定义声明fun
对于第一种形式没有指定Module,其会隐式的判断对应的Module,可能是import的Module,也可能是当前Module。(注意:推荐不要使用import,容易混淆,同时使用Module:Name/Arity可以保证加载的代码总是最新版本的代码)
其实以上只是一个语法糖,等同于下面的形式:
对于fun调用可以采用多种形式,比如我们要将L2 [3, 4]追加到L1 [1, 2]:
fun
(Pattern1, ..., PatternN) [when GuardSeq1] ->
Body1;
....
(PatternK1, ..., PatternKN) [when GuardSeqK] ->
BodyK
end
也可以依据已经定义的函数定义声明fun
fun Name/Arity
fun Module:Name/Arity
对于第一种形式没有指定Module,其会隐式的判断对应的Module,可能是import的Module,也可能是当前Module。(注意:推荐不要使用import,容易混淆,同时使用Module:Name/Arity可以保证加载的代码总是最新版本的代码)
其实以上只是一个语法糖,等同于下面的形式:
fun(Arg1, Arg2, ...) -> Module:Name/Arity(Arg1, Arg2, ...) end
对于fun调用可以采用多种形式,比如我们要将L2 [3, 4]追加到L1 [1, 2]:
[list=1]
1, Fun1 = fun(L1, L2) -> lists:append(L1, L2) end, Fun1([1, 2], [3, 4]).
2, fun(L1, L2) -> lists:append(L1, L2)([1, 2], [3, 4]).
3, Fun2 = {lists, append}, Fun2([1, 2], [3, 4]).(不推荐使用)
4, fun lists:append/2([1, 2], [3, 4])
[/list]