你如何得到一个棘手的功能参考?

时间:2011-04-07 02:10:16

标签: erlang

当动态指定模块并且您将其传递给更高阶函数时,如何获得模块中函数的引用?

例如:

Mod = compare_funs,
lists:sort(fun Mod:compare/2, List).

只是,这不会编译。一种方法是在匿名的乐趣中包含对目标函数的调用,但我想知道是否有办法直接获取引用。

1 个答案:

答案 0 :(得分:3)

来自以下文件:

http://www.erlang.org/doc/programming_examples/funs.html#id59209

  

我们也可以参考一个功能   用不同的模块定义   语法如下:

F = {Module, FunctionName}
     

在这种情况下,函数必须是   从相关模块中导出。

例如,您可以这样做:

-module(test).

-export([compare/2, test/2]).

compare(X, Y) when X > Y ->
    true;
compare(X, Y) ->
    false.

test(Mod, List) ->
    lists:sort({Mod, compare}, List).


1> test:test(test, [1,3,2]).
[3,2,1]