есть вот такой вот код
defmodule Mac do
defmacro __using__(_opts) do
quote do
require Mac
import Mac
def message(msg, data \\ %{})
end
end
defmacro define_message(code, msg) do
quote do
def message(unquote(code), data) do
unquote(msg)
end
end
end
end
defmodule Mac.Impl do
use Mac
define_message(:TEST, "TEST")
define_message(:TEST_DATA, "TEST: #{inspect data}")
end
я хочу чтобы теплейт коорый я передаю в макрос вторым аргументом попал как есть в сгенеренную функию и подставил себе занчения уже непосредственно из аргумента функции
как так сделать?
Macro.expand
если кому вдруг интересно просто заюзал EEx для того чтоб темплейты рендерить
Я ошибся, тебе нужно тягать переменную из внешнего контекста, это нужно делать средством var! Но Не нужно так делать, это плохая практика Это делает код очень нечистым и я думаю, ты пока что плохо осознаёшь последствия такого решения
Обсуждают сегодня