erlang - 如何获得棘手的函数引用?

标签 erlang

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

例如:

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

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

最佳答案

来自以下位置的文档:

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

We can also refer to a function defined in a different module with the following syntax:

F = {Module, FunctionName}

In this case, the function must be exported from the module in question.

例如,您可能会这样做:

-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]

关于erlang - 如何获得棘手的函数引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5575176/

相关文章:

erlang - 将字符串附加到列表中的项目 :flatten in Erlang?

erlang - Couchdb无法启动。 -无法启动Mochiweb : eaddrinuse

erlang - Elixir 编译时代码注入(inject)/AOP

ssl - 如何在 cowboy_http_handler 中获取对等证书

erlang - 学习 Erlang 的最佳方法是什么?

erlang - 使用暗模式修复 OSX 上的 Erlang 观察器

erlang - 使用 meck (Erlang) 时导致 "not mocked"错误的原因是什么?

crash - Erlang/OTP,如何在不崩溃的情况下发出应用程序启动错误信号

erlang - 是否可以使用记录作为记录元素

linux - 如果很多socket连接处于TIMEWAIT状态,是否会影响服务器的性能