我正在创建一个动态执行函数的任务。这个函数每次都不同,参数的数量也不同( [1, "hi", :a] ),所以我用了 Kernel.apply/2 .
[1, "hi", :a]
Kernel.apply/2
defp create_task(f, args) do Task.async(fn -> apply(f, args) end) end
但是我无法让它与私有函数一起工作(声明使用 defp ):
defp
create_task(&__MODULE__.my_private_fun/3, args)
如果要传递的函数是使用 defp
create_task(&my_private_fun/3, args)
这里需要注意的重要一点是,必须指定函数arity(没有宏)这一事实是绕不开的,所以为什么不直接调用函数呢?