Kurzreferenz

Elixir Metaprogrammierung Spickzettel

Kurzreferenz fuer Elixir-Metaprogrammierung: __ENV__, __MODULE__, __CALLER__, Kernel.SpecialForms, quote, unquote und AST-Inspektion.

· Veröffentlicht

Syntax-Kurzreferenz fuer Metaprogrammierung, AST-Kompilierungszeit-Inspektion und Makro-Erstellung in Elixir.

🔗 Verwandt: Elixir Programmiersprache Spickzettel

Spezielle Formen und Pseudovariablen (Special Forms & Pseudo-Variables)

In Kernel.SpecialForms definierte Kernkonstrukte:

__DIR__     # Absoluter Verzeichnispfad der aktuellen Datei als Zeichenkette
__MODULE__  # Modulname-Atom des aktuellen Moduls
__ENV__     # Struct der aktuellen Kompilierungsumgebung (Macro.Env)
__CALLER__  # Umgebungs-Struct des Makro-Aufrufers

Ausfuehrungsumgebung pruefen (ENV)

# Felder der Kompilierungsumgebung untersuchen
Map.keys(__ENV__)
# => [:__struct__, :aliases, :context, :context_modules, :export_vars, :file,
#     :function, :functions, :lexical_tracker, :line, :macro_aliases, :macros,
#     :module, :requires, :vars]

# Definitionen im aufrufenden Modul untersuchen
__CALLER__.module |> Module.definitions_in() |> IO.inspect()

Quotes, AST und dynamischer Dispatch (Quotes, AST & Dynamic Dispatch)

# Abstrakten Syntaxbaum (AST) erzeugen
quote do: 1 + 2
# => {:+, [context: Elixir, import: Kernel], [1, 2]}

# Unquote innerhalb von Quotes
number = 10
quote do: 1 + unquote(number)

# Dynamischer Funktionsaufruf
apply(Enum, :reverse, [[1, 2, 3]])
# => [3, 2, 1]

Verwandte Themen