在“普通”模块函数调用中使用“apply”有什么好处?
问题描述:
我学药剂,我不知道是什么用apply
调用模块的功能的好处:在“普通”模块函数调用中使用“apply”有什么好处?
apply(Enum, :reverse, [[1, 2, 3]])
,而不是使用正常调用:
Enum.reverse([1, 2, 3])
当是第一一个更好?
答
如果在编译时已知模块的名称,函数和想要传递给它的参数的数量,则无需调用apply/3
。如果在运行时选择了这些选项,则apply/3
是进行适当调用的唯一方法。从某种意义上说,它就像是一个“eval”函数的一个非常有限的子集:它可以让你存储模块和函数的名字以及在变量中传递给它的参数,并且它会进行适当的调用。
因此,简而言之,您只需要使用apply/3
,如果没有它就无法完成任务。
了解,谢谢! –