【发布时间】:2017-02-16 17:40:53
【问题描述】:
我正在尝试编写一个调用具有指定名称和数量的函数的函数:
my_fun(FunctionName, Arity) ->
%Call FunctionName/Arity
.
所以这样称呼它:
my_fun(foo, 3)
应该会调用函数foo/3。
问题是,如果只指定函数的名称和数量,我不知道如何调用函数。我尝试调用的函数保证存在于我尝试调用它的同一模块中。
是否可以在 Erlang 中实现,如何实现?
【问题讨论】:
-
在这种情况下,您想向
foo发送什么参数? -
类似 foo(1,2,3) 的东西会做,在这个例子中并不重要。在实际程序中,我计划有一个 case 语句,并根据 Arity 使用不同的参数调用它。
-
erlang:apply(FunctionName, lists:seq(1, Arity))? -
我最终使用了 apply(?MODULE, FunctionName, [some, args, here])。它的工作方式正是我需要的。