È 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
Grazie per il vostro aiuto :) – JustMichael
'apply' è simile a' public_send'. Sarebbe simile inviare se una funzione privata potrebbe essere chiamata da qualsiasi luogo, giusto? – Eduardo