Допустим, у меня есть модули Silent
и Definer
. Я хочу определить пару функций для Silent
на основе его атрибута. Позволь мне объяснить:
defmodule Silent do
@function_names [:a, :b, :c]
use Definer
end
defmodule Definer do
defmacro __using__(_) do
quote do
Enum.each(@function_names, fn(n) ->
def unquote(n)() do # line 5
IO.puts "a new method is here!"
end
end)
end
end
end
Но этот подход на самом деле не работает, потому что у меня undefined function n/0 on line 5
. Как я могу реализовать желаемый функционал?