6
Więc zastanawiam się, czy mogę zrobić coś podobnego w Elixir?Czy w Elixir jest coś podobnego do metody wysyłania ruby?
def some_method(some_param) # a symbol for example
send(some_param)
end
Więc zastanawiam się, czy mogę zrobić coś podobnego w Elixir?Czy w Elixir jest coś podobnego do metody wysyłania ruby?
def some_method(some_param) # a symbol for example
send(some_param)
end
Można użyć Kernel.apply/3.
apply(Enum, :reverse, [[1, 2, 3]])
Z modułem jak ten:
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
mogę powołać specyficzną funkcję za pomocą jego nazwa:
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
Dziękuję za pomoc :) – JustMichael
'apply' jest podobne do' public_send'. Byłoby to podobne do wysyłania, gdyby można było wywołać prywatną funkcję z dowolnego miejsca, prawda? – Eduardo