Hello,
I am wondering why it is not needed to unquote
with defmodule
when using variables that are defined outside of the call to defmodule
.
For instance:
defmodule MacroMod do
defmacro __using__(opts) do
quote bind_quoted: binding() do
dir = Keyword.fetch!(opts, :dir) |> dbg()
def from_macro, do: unquote(dir)
end
end
end
dir = "/some/where"
defmodule UseMod do
use MacroMod, dir: dir
def direct, do: unquote(dir)
end
"/some/where" = UseMod.from_macro()
"/some/where" = UseMod.direct()
In the code above I can directly use the dir
variable in use
in UseMod
, or usit it in a def
(where there is an unquote
but for the def
scope).
Thank you.