Возникла проблема с использованием макроса в Erlang
пример кода
-define(Test(Local1),
fun(Local2)->
Res=Local1+Local2,
Res
end
).
test_lambda()->
?Test(1)(2).
При вставке его в код, создается замыкание на контекст конкретной функции, тоесть есть вызвать его так:
test_lambda()->
Res=6,
?Test(1)(2).
то будет выпадать ошибка потому что не может выполнить patern matching
6=3, можно ли как-либо запретить создавать замыкание? или определить Res как локальную переменную для макроса, параметры макроса определяются как локальные, тоесть если вызвать так
test_lambda()->
Local1=1,Local2=5,
?Test(1)(2).
то работать будет. Конечно иожно давать такие имена котореые точно не встретятся в программе, но всеравно это не надежно, хочется узнать есть ли более правильные способы. Макросы использую для доступа к базе.