現在、いくつかのエリクシールマクロの楽しいことに取り組んでいます。私はそのようなモジュールを持っている:引用符以外の呼び出し元モジュールの属性にアクセスする
このような結果に得defmodule MapUtils do
@handlers "I don't want you"
defmacro __using__(_) do
quote do
import MapUtils
Module.register_attribute __MODULE__, :handlers, accumulate: true
@handlers "I want you"
end
end
defmacro test do
IO.inspect @handlers
quote do
IO.inspect(@handlers)
end
end
end
defmodule Test do
use MapUtils
def testowa do
MapUtils.test
end
end
Test.testowa
:
"I don't want you"
["I want you"]
が、私はそれが何であるかに基づいていくつかのコードを生成するために引用ブロックの外に発信者モジュールから@handlersにアクセスしたいです。私の理解が最初に検査される限り、検査が実行されており、2番目の検査はASTに変換されており、別の状況で実行されています。
呼び出し元モジュールからその@handlersにコンパイル時にアクセスする方法はありますか?