此Elixir函数中第二个参数的含义是什么?
Code.compile_quoted(quoted, file \\ "nofile")
我试着像这样使用它,
q = quote do
defmodule A do
def hello, do: IO.puts "hello from A"
end
end
Code.compile_quoted(q, "Elixir.A.beam")
但未创建文件Elixir.A.beam
。
由于
答案 0 :(得分:1)
这主要是编译器为反向报告构建环境的内部功能。它与梁无关,它是在需要时将其吐出给用户的相关文件名。
q = quote do
defmodule A do
def hello do
IO.puts "hello from A (" <> __ENV__.file <> ")"
end
end
end
Code.compile_quoted(q, "my_file.ex")
A.hello
#⇒ hello from A (my_file.ex)
# ⇑⇑⇑⇑⇑⇑⇑⇑⇑⇑
当invoked by compiler internally时,它会在那里传递真实的文件名。