本文根据 Devhints / Elixir metaprogramming 翻译。代码示例及版本范围沿用原文。
内核 (Kernel)
其中大部分“魔法”定义在 Kernel.SpecialForms.
伪变量
__DIR__ # current dir
__MODULE__ # current module
__CALLER__ # caller of the function
__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
apply(Enum, :reverse, [[1, 2, 3]])