1.匿名fun函数shell
a.匿名函数与变量绑定 函数
咱们通常看到的是将一个匿名的函数赋值给一个变量:至关于这个变量就是之后的函数名。
spa
后面就将这个变量看成函数名用便可。例如:code
Double=fun(X)->2*x end. Double(2). 结果为1.
b.匿名fun函数做为函数参数event
L=[1,2,3,4]. list:map(fun(X)->2*X end,L).
总之,要匿名函数发挥做用,就必须与变量绑定,或者做为参数被传给其余函数,还有就是必定不要忘了匿名函数的函数体有个end做为其结尾。class
2.函数别名的fun函数
test
a.本模块应用匿名函数
若是要应用本模块内部的已经定义的某个函数,直接将之传递给其余函数当作参数,用以下形式变量
make(Name)-> register(Name,spawn(fun()->my_handler(fun no_op/1) end)). no_op(_)->void. my_handler(Fun)-> receive {event,Any}-> catch Fun(Any) end.
在my_handler()函数参数的fun no_op/1就至关是no_op(_)函数的函数别名。当赋值给一个变量之后能够用这个别名像调用任意普通函数同样的来调用这个函数。module
注:本地别名fun函数与匿名fun函数在实现上很相似,它们都依赖于模块的当前版本。
b.其余模块应用
1 -module(test). 2 3 -export([test/1]). 4 5 test(X) when X > 2 -> true; 6 7 test(X) -> false.
若是在shell中应用:
注:在被调用时,它们不依赖于特定的版本。反而是老是指向引用函数的最新版本。