OSDN Git Service

Regular updates
[twpd/master.git] / elixir-metaprogramming.md
1 ---
2 title: Elixir metaprogramming
3 category: Elixir
4 ---
5
6 ## Kernel
7
8 Most of these magic is defined in [Kernel.SpecialForms](http://devdocs.io/elixir/elixir/kernel.specialforms).
9
10 ### Pseudo-variables
11
12 ```elixir
13 __DIR__     # current dir
14 __MODULE__  # current module
15 __CALLER__  # caller of the function
16 ```
17
18 ### [`__ENV__`](http://devdocs.io/elixir/elixir/kernel.specialforms#__ENV__/0)
19
20 ```elixir
21 Map.keys(__ENV__)
22 [:__struct__, :aliases, :context, :context_modules, :export_vars, :file,
23  :function, :functions, :lexical_tracker, :line, :macro_aliases, :macros,
24  :module, :requires, :vars]
25 ```
26
27 ```elixir
28 __CALLER__.module |> Module.definitions_in |> IO.inspect
29 ```
30
31 ```elixir
32 apply(Enum, :reverse, [[1, 2, 3]])
33 ```