Знайомство з Erlang [22]
розглянемо вбудовані в erlang макроси
макроси - це інструкції, які на етапі компіляції зникають, розгортаються
файл test1.erl
-module(test1).
-compile([export_all, nowarn_export_all]).
test() ->
io:format("Module: ~p~n", [?MODULE]),
io:format("Module: ~p~n", [?MODULE_STRING]),
io:format("File: ~p~n", [?FILE]),
io:format("Line: ~p~n", [?LINE]),
io:format("Function: ~p/~p~n", [?FUNCTION_NAME, ?FUNCTION_ARITY]),
ok.
1> test1:test().
Module: test1
Module: "test1"
File: "src/test1.erl"
Line: 12
Function: test/0
ok
Пояснення
?MODULE - назва поточно модуля, atom
?MODULE_STRING - назва поточного модуля, спискова строка
?FILE - назва поточного файла модуля, спискова строка
?LINE - номер поточної строки коду модуля, integer
?FUNCTION_NAME - назва поточної функції, atom
?FUNCTION_ARITY - арність (кількість аргументів на вході) поточної функції, integer
Посилання
https://erlang.org/doc/reference_manual/macros.html
https://medium.com/pragmatic-programmers/macros-c4993f699158
http://tryerl.seriyps.ru/