文件gproc_lib.erl中以下语句的含义是什么?

时间:2012-02-23 09:58:21

标签: erlang

当阅读github的Project gproc的源代码文件“gproc_lib.erl”时,我遇到了一些问题。 我在哪里可以找到这种语句语法的相关参考文档?

check_option_f(ets_options)    -> fun check_ets_option/1; **%<----**What's the meaning of this** statement**?
check_option_f(server_options) -> fun check_server_option/1.

check_ets_option({read_concurrency , B}) -> is_boolean(B);
check_ets_option({write_concurrency, B}) -> is_boolean(B);
check_ets_option(_) -> false.

check_server_option({priority, P}) ->
    %% Forbid setting priority to 'low' since that would
    %% surely cause problems. Unsure about 'max'...
    lists:member(P, [normal, high, max]);
check_server_option(_) ->
    %% assume it's a valid spawn option
    true.

1 个答案:

答案 0 :(得分:5)

fun module:name/arity是一个函数值,相当于以下内容:

fun(A1,A2,...,AN) -> module:name(A1,A2,...,AN) end

其中N是arity。简而言之,将普通的Erlang函数作为参数传递给其他函数作为参数是一种有用的简写。

示例:

将列表List转换为集合:

lists:foldl(fun sets:add_element/2, sets:new(), List).

相当于:

lists:foldl(fun (E, S) -> sets:add_element(E, S) end, sets:new(), L).

(后者是OTP的set模块中用于from_list函数的定义。)

更多信息here