erlang精要(18)-以函式作為引數的函式,返回函式的函式
阿新 • • 發佈:2021-02-20
以函式作為引數的函式:
下面以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>