使用“apply”比“普通”模块函数调用有什么好处?

时间:2017-10-16 09:57:53

标签: elixir

我正在学习Elixir,我想知道使用if (i < 5 && current.equals(listaTags.get(i + 1))) {...} 调用模块函数有什么好处:

apply

而不是使用普通调用:

apply(Enum, :reverse, [[1, 2, 3]])

第一个什么时候更好?

1 个答案:

答案 0 :(得分:3)

当在编译时知道模块的名称,函数和要传递给它的参数数量时,不需要调用apply/3。如果在运行时选择了其中任何一个,apply/3是进行适当调用的唯一方法。在某种程度上,它就像一个非常有限的一部分&#34; eval&#34; function:它允许你存储模块和函数的名称以及在变量中传递给它的参数,并进行适当的调用。

因此,简而言之,只有在没有它的情况下无法完成任务时,您才需要使用apply/3