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

问题描述:

我学药剂,我不知道是什么用apply调用模块的功能的好处:在“普通”模块函数调用中使用“apply”有什么好处?

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

,而不是使用正常调用:

Enum.reverse([1, 2, 3]) 

当是第一一个更好?

如果在编译时已知模块的名称,函数和想要传递给它的参数的数量,则无需调用apply/3。如果在运行时选择了这些选项,则apply/3是进行适当调用的唯一方法。从某种意义上说,它就像是一个“eval”函数的一个非常有限的子集:它可以让你存储模块和函数的名字以及在变量中传递给它的参数,并且它会进行适当的调用。

因此,简而言之,您只需要使用apply/3,如果没有它就无法完成任务。

+0

了解,谢谢! –