【发布时间】:2016-07-22 23:07:54
【问题描述】:
我有两个版本的__using__,但是,第一个版本的行为与我预期的不同。这段代码不能正常工作(实际上它并没有导入任何东西)。
defmodule SomeModule do
defmacro __using__(opts \\ []) do
quote do
opts = unquote(opts)
if Keyword.has_key?(opts, :my_key) && opts[:my_key] == 3 do
import MyModuleOne
else
import MyModuleTwo
end
end
end
end
这是工作版本,但是,我不喜欢有两个单独的 quote 部分。
defmodule SomeModule do
defmacro __using__(opts \\ []) do
if Keyword.has_key?(opts, :my_key) && opts[:my_key] == 3 do
quote do
import MyModuleOne
end
else
quote do
import MyModuleTwo
end
end
end
end
第一个应该如何重写才能正常工作?
【问题讨论】: