1. 程式人生 > 其它 >erlang精要(18)-以函式作為引數的函式,返回函式的函式

erlang精要(18)-以函式作為引數的函式,返回函式的函式

技術標籤:大資料與演算法計算erlang

以函式作為引數的函式:
下面以Is_odd函式作為引數呼叫map和filter

1> Is_odd =fun(X) -> (X rem 2) =:= 1 end.
#Fun<erl_eval.44.79398840>
2> Y=[1,2,3,4,5,6,7,8,9].
[1,2,3,4,5,6,7,8,9]
5> lists:map(Is_odd,Y).
[true,false,true,false,true,false,true,false,true]
6> lists:filter(Is_odd,Y)
. [1,3,5,7,9]

Is_odd是一個函式,同時也是map和filter的引數之一
返回函式的函式
IsMember函式(該函式本身也是一個匿名函式)返回了一個匿名函式,檢測某成員是否是列表L的成員。
使用匿名函式IsMember定義函式時,需要指定列表L。
呼叫IsStudent再指定檢測的成員

7> Student=[zhangsang,lisi,wangwu,liping,liujun,xiehua].
[zhangsang,lisi,wangwu,liping,liujun,xiehua]
8> IsMember=fun(L)->(fun(X)->lists
:member(X,L) end) end. #Fun<erl_eval.44.79398840> 9> IsStudent=IsMember(Student). #Fun<erl_eval.44.79398840> 10> IsStudent(lisi). true 11> IsStudent(lisihai). false 12>