Referință rapidă

Ghid rapid Metaprogramare în Elixir

Ghid rapid de referinta pentru metaprogramare in Elixir: __ENV__, __MODULE__, __CALLER__, Kernel.SpecialForms, macro-uri quote si unquote.

· Publicat

Ghid rapid de sintaxa pentru metaprogramare, inspectie AST la compilare si macro-uri in Elixir.

🔗 Conex: Ghid rapid Limbajul Elixir

Forme speciale și pseudovariabile (Special Forms & Pseudo-Variables)

Constructe principale definite in Kernel.SpecialForms:

__DIR__     # Calea absoluta catre directorul fisierului curent
__MODULE__  # Atomul numelui modulului curent
__ENV__     # Structura mediului de compilare (Macro.Env)
__CALLER__  # Structura mediului apelantului macro-ului

Inspectarea mediului de execuție (ENV)

# Inspectare campuri in mediul de compilare
Map.keys(__ENV__)
# => [:__struct__, :aliases, :context, :context_modules, :export_vars, :file,
#     :function, :functions, :lexical_tracker, :line, :macro_aliases, :macros,
#     :module, :requires, :vars]

# Inspectare definitii in modulul apelant
__CALLER__.module |> Module.definitions_in() |> IO.inspect()

Quotes, AST și dispatch dinamic (Quotes, AST & Dynamic Dispatch)

# Generare arbore sintactic abstract (AST)
quote do: 1 + 2
# => {:+, [context: Elixir, import: Kernel], [1, 2]}

# Unquote in interiorul quote
number = 10
quote do: 1 + unquote(number)

# Invocare dinamica a functiilor
apply(Enum, :reverse, [[1, 2, 3]])
# => [3, 2, 1]

Subiecte conexe