LYSE-高阶函数

将函数作为参数

一个定义的例子

-module(hhfuns).
-compile(export_all).
 
one() -> 1.
two() -> 2.
 
add(X,Y) -> X() + Y().

使用

1> c(hhfuns).
{ok, hhfuns}
2> hhfuns:add(one,two).
** exception error: bad function one
in function  hhfuns:add/2
3> hhfuns:add(1,2).
** exception error: bad function 1
in function  hhfuns:add/2
4> hhfuns:add(fun hhfuns:one/0, fun hhfuns:two/0).
3

匿名函数

语法

fun(参数1) ->
    表达式1, 表达式2, ..., 表达式N;
    (参数2) ->
    表达式1, 表达式2, ..., 表达式N;
    (参数3) ->
    表达式1, 表达式2, ..., 表达式N
end

例子

7> Fn = fun() -> a end.
#Fun<erl_eval.20.67289768>
8> Fn().
a
原文地址:https://www.cnblogs.com/sqxy110/p/5001675.html