2015-08-16 11 views

risposta

11

È possibile utilizzare Kernel.apply/3.

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

Un esempio:

Con un modulo come questo:

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 

posso richiamare una funzione specifica utilizzando il suo nome:

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

Grazie per il vostro aiuto :) – JustMichael

+0

'apply' è simile a' public_send'. Sarebbe simile inviare se una funzione privata potrebbe essere chiamata da qualsiasi luogo, giusto? – Eduardo

Problemi correlati