Знайомство з 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/