Desidero creare dinamicamente un nome di funzione. Ho scritto questa macroCome creare un nome di funzione dinamico usando la macro Elixir?
defmacro generate_dynamic(name) do
quote do
def add_(unquote(name)) do
end
end
end
E ho usato in questo modo:
defmodule AnotherModule do
generate_dynamic :animal
end
Ora, ho solo AnotherModule.add_
funzione definita, mentre mi aspetto AnotherModule.add_animal
funzione.
ho pensato 'unquote' lavorato solo ** all'interno di una macro **. Com'è che funziona all'interno di una funzione anonima? – asymmetric
Mi rispondo: unquote e [unquote fragments] (http://elixir-lang.org/docs/stable/elixir/Kernel.SpecialForms.html) sono due cose diverse. – asymmetric
Giusto per chiarire quanto sopra: i frammenti di unquote sono 'unquote's che sono al di fuori di un blocco' quote'. – asymmetric