2015-08-16 76 views

回答

11

您可以使用Kernel.apply/3

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

一個例子:

有了這樣的模塊:

iex(1)> c("apply.ex") 
[Apply] 

iex(2)> Apply.dynamic(:method1, ["Hey"]) 
Method 1, called by Hey 
:ok 

iex(3)> Apply.dynamic(:method2, ["Hey"]) 
Method 2, called by Hey 
:ok 
+0

謝謝您的幫助:):

defmodule Apply do def dynamic(method_name, params) do apply(Apply, method_name, params) end def method1(params) do IO.puts "Method 1, called by " <> params end def method2(params) do IO.puts "Method 2, called by " <> params end end 

我可以用它的名字調用一個特定的功能 – JustMichael

+0

'apply'類似於'public_send'。如果一個私人函數可以從任何地方被調用,它會類似於發送,對嗎? – Eduardo

相關問題