Référence rapide

Aide-mémoire Métaprogrammation Elixir

Guide de référence rapide pour la métaprogrammation en Elixir : __ENV__, __MODULE__, __CALLER__, Kernel.SpecialForms, macros quote et unquote.

· Publié le

Guide rapide de syntaxe pour la metaprogrammation, l'inspection d'AST a la compilation et les macros en Elixir.

🔗 Connexe : Aide-memoire Langage Elixir

Formes spéciales et pseudo-variables (Special Forms & Pseudo-Variables)

Constructions principales definies dans Kernel.SpecialForms :

__DIR__     # Chemin absolu du repertoire du fichier actuel
__MODULE__  # Atome du nom du module actuel
__ENV__     # Structure de l'environnement de compilation (Macro.Env)
__CALLER__  # Structure de l'environnement de l'appelant

Inspection de l'environnement (ENV)

# Inspecter les champs de l'environnement de compilation
Map.keys(__ENV__)
# => [:__struct__, :aliases, :context, :context_modules, :export_vars, :file,
#     :function, :functions, :lexical_tracker, :line, :macro_aliases, :macros,
#     :module, :requires, :vars]

# Inspecter les definitions du module appelant
__CALLER__.module |> Module.definitions_in() |> IO.inspect()

Quotes, AST et dispatch dynamique (Quotes, AST & Dynamic Dispatch)

# Generer l'arbre syntaxique abstrait (AST)
quote do: 1 + 2
# => {:+, [context: Elixir, import: Kernel], [1, 2]}

# De-citer unquote a l'interieur de quote
number = 10
quote do: 1 + unquote(number)

# Invocation dynamique de fonction
apply(Enum, :reverse, [[1, 2, 3]])
# => [3, 2, 1]

Sujets associés