1
私は__using__
の2つのバージョンを持っていますが、最初のバージョンは期待したものとは異なる動作をします。このコードは正しく動作しません(実際には何もインポートされません)。エリクシール引用符/クォートとマクロの動作
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
そして、これが作業バージョンである、しかし、私は2つの別々の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
正しく動作するには最初の書き換えはどうすればよいですか?
えっ、あなたは右:)他の機能とすることをチェックしている - を確認:) – kovpack