Вызов вункции через кортеж

Не так давно наткнулся на одну интересную возможность в Erlang. Если вместо названия модуля при вызове функции передать кортеж, где первый элемент — название модуля, то будет вызвана функция
арностью на единицу больше вызываемой и последним аргументом будет тот самый кортеж.

Пример:
-module(my_module).

-export([test/2]).

test(Arg1,{?MODULE,Arg2}) ->
  io:format("Arg1:~p~nArg2:~p~n",[Arg1,Arg2]).

Можно вызвать как:
my_module:test(1,{my_module,2}).
или так
{my_module,2}:test(1).

Читать дальше →

© Habrahabr.ru