Mi piacerebbe sapere che cosa esattamente un nome del metodo è in elisir:Come chiamare dinamicamente un metodo in Elixir, specificando sia il nome del modulo che quello del metodo?
array = [1,2,3]
module_name = :lists
method_name = :nth # this not working
module_name.method_name(1, array) # error, undef function lists.method_name/2
module_name.nth(1, array) # returns 1, module_name is OK. It's an atom
Ma posso fare quasi la stessa cosa in Erlang:
A = [1,2,3].
X = lists.
Y = nth.
X:Y(1,A). # returns 1
Come posso fare questo in elisir?
Buono. Quindi il nome del metodo è un atomo. Ora penso che sia solo la sintassi che non ci permette di scrivere 'module.method' in elisir, giusto? – halfelf
Credo che tu abbia ragione. Penso che l'unico modo per farlo funzionare sarebbe cambiare la sintassi per usare gli atomi quando si chiamano le funzioni del modulo (ad esempio ': lists.: Nth'). Preferirei semplicemente usare apply in casi come questo. – lastcanal
Grazie. Questa risposta è molto utile. – halfelf