Γρήγορη αναφορά

Φύλλο οδηγιών Elixir Metaprogramming

Γρήγορος οδηγός αναφοράς για τον μεταπρογραμματισμό στην Elixir: __ENV__, __MODULE__, __CALLER__, Kernel.SpecialForms, quote και unquote.

· Δημοσιεύτηκε

Σύντομος οδηγός αναφοράς σύνταξης για μεταπρογραμματισμό και μακροεντολές στην Elixir.

🔗 Σχετικά: Φύλλο οδηγιών γλώσσας Elixir

Ειδικές μορφές και ψευδομεταβλητές (Special Forms & Pseudo-Variables)

Βασικές δομές μεταπρογραμματισμού στο Kernel.SpecialForms:

__DIR__     # Απολυτη διαδρομη καταλογου του τρεχοντος αρχειου
__MODULE__  # Ατομο ονοματος της τρεχουσας ενοτητας
__ENV__     # Δομη περιβαλλοντος μεταγλωττισης (Macro.Env)
__CALLER__  # Δομη περιβαλλοντος του καλουντος τη μακροεντολη

Επιθεώρηση περιβάλλοντος εκτέλεσης (ENV)

# Επιθεωρηση πεδιων στο περιβαλλον μεταγλωττισης
Map.keys(__ENV__)
# => [:__struct__, :aliases, :context, :context_modules, :export_vars, :file,
#     :function, :functions, :lexical_tracker, :line, :macro_aliases, :macros,
#     :module, :requires, :vars]

# Επιθεωρηση ορισμων στην καλουσα ενοτητα
__CALLER__.module |> Module.definitions_in() |> IO.inspect()

Quotes, AST και δυναμική αποστολή (Quotes, AST & Dynamic Dispatch)

# Δημιουργια αφηρημενου δενδρου συνταξης (AST)
quote do: 1 + 2
# => {:+, [context: Elixir, import: Kernel], [1, 2]}

# Unquote εντος quote
number = 10
quote do: 1 + unquote(number)

# Δυναμικη κληση συναρτησης
apply(Enum, :reverse, [[1, 2, 3]])
# => [3, 2, 1]

Σχετικά θέματα