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中應用:
注:在被調用時,它們不依賴於特定的版本。反而是老是指向引用函數的最新版本。