我想在编译时获取某个命名空间中的模块列表,作为一个宏。
defmodule MyApp.MyModuleLoader do
defmacro __using__(opts) do
quote bind_quoted: [opts: opts] do
a1 = :application.get_key(:my_app)
modules = :application.get_key(:my_app, :modules)
IO.puts("****:a1: #{Kernel.inspect(a1)}")
IO.puts("****:modules: #{Kernel.inspect(modules)}")
# ====> :undefined
# filter out the ones I don't need...
# ....
end
end
end
然后我会
use MyModuleLoader
在模式模型模块中。
但是它会在编译期间为两个变量打印出:undefined
。
为什么?如何解决这个问题?