Elixir中Code.compile_/2的第二个参数

Elixir中Code.compile_/2的第二个参数,elixir,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文件没有创建 这主要是编译器构建后台报告环境的内部功能。它与梁无关,

这个长生不老药函数中第二个参数的含义是什么

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文件没有创建


这主要是编译器构建后台报告环境的内部功能。它与梁无关,它是在需要时向用户吐出的相关文件名

q=报价行 defado模块 你好吗 IO.puts将hello从一个_ENV___;文件中放入 终止 终止 终止 Code.compiledq,my.ex 你好 ⇒来自my_file.ex的你好 ⇑⇑⇑⇑⇑⇑⇑⇑⇑⇑
当它在那里传递真实的文件名时。

谢谢。文档中没有提到这一点。这是因为你根本不应该运行这个方法。好吧,如果一些东西是公开文档,并且没有任何东西反对使用它,那么人们会使用它。好吧,是的,在某种程度上。我的意思是,Code.compile_quoted/1虽然仍然被认为是一种代码味道,但在某些情况下可能是最后的选择。如果您正在编写自己的DSL编译器,您可能需要这个函数,这就是它被公开的原因。后者意味着您在任何情况下都不会依赖文档,而是会检查代码。代码回答了这个问题。如果您不去检查代码,您大概不应该使用这个函数:文档中说:可以将一个文件作为第二个参数,用于报告警告和错误。少了什么?