Riferimento rapido

Foglio di riferimento Metaprogrammazione Elixir

Guida rapida di riferimento per la metaprogrammazione in Elixir: __ENV__, __MODULE__, __CALLER__, Kernel.SpecialForms, quote e unquote.

· Pubblicato

Guida rapida di riferimento per metaprogrammazione, ispezione AST e macro in Elixir.

🔗 Correlato: Foglio di riferimento Linguaggio Elixir

Forme speciali e pseudovariabili (Special Forms & Pseudo-Variables)

Costrutti principali definiti in Kernel.SpecialForms:

__DIR__     # Percorso assoluto della directory del file corrente
__MODULE__  # Atomo del nome del modulo corrente
__ENV__     # Struct dell'ambiente di compilazione (Macro.Env)
__CALLER__  # Struct dell'ambiente del chiamante della macro

Ispezione dell'ambiente (ENV)

# Esplorare i campi dell'ambiente di compilazione
Map.keys(__ENV__)
# => [:__struct__, :aliases, :context, :context_modules, :export_vars, :file,
#     :function, :functions, :lexical_tracker, :line, :macro_aliases, :macros,
#     :module, :requires, :vars]

# Ispezionare le definizioni nel modulo chiamante
__CALLER__.module |> Module.definitions_in() |> IO.inspect()

Quote, AST e dispatch dinamico (Quotes, AST & Dynamic Dispatch)

# Generare l'albero sintattico astratto (AST)
quote do: 1 + 2
# => {:+, [context: Elixir, import: Kernel], [1, 2]}

# Unquote all'interno di quote
number = 10
quote do: 1 + unquote(number)

# Invocazione dinamica di funzione
apply(Enum, :reverse, [[1, 2, 3]])
# => [3, 2, 1]

Argomenti correlati