玩意儿

Erlang 是一种函数式编程语言。函数编程语言的一个特性是将函数作为数据(函数对象)处理。

  • 将函数作为参数传递给另一个函数。
  • 作为函数的结果返回函数。
  • 在某些数据结构中保留函数。

在 Erlang 中,这些函数称为 funs。Funs 是匿名函数。

1> Fun = fun(X) -> X*X end.
#Fun<erl_eval.6.52032458>
2> Fun(5).
25

Funs 也可能有几个条款。

3> AddOrMult = fun(add,X) -> X+X;
3>                (mul,X) -> X*X 
3> end.
#Fun<erl_eval.12.52032458>
4> AddOrMult(mul,5).
25
5> AddOrMult(add,5).
10

你还可以使用模块函数作为语言:fun Module:Function/Arity
例如,让我们lists 模块中获取 max 函数,它具有 arity 1。

6> Max = fun lists:max/1.
#Fun<lists.max.1>
7> Max([1,3,5,9,2]). 
9