这是我的代码文件“test.exs”的内容:
defmodule Test do
def f(:a, x) do x + 1 end
def f(:b, x) do x - 1 end
end
import Test
IO.puts f :a, 3
IO.puts f :b, 3
通过
elixir test.exs
在 shell 中运行此文件失败。我认为问题出在import Test
。那么导入在同一文件中定义的模块的正确方法是什么?
我不相信这是可能的:
import
是编译时的便利——它基本上是在编译时进行复制/粘贴,所以据我所知它需要编译源模块。 如果您尝试从定义该模块的同一文件内导入该模块,则该模块尚未编译,因此无法导入。 当我尝试这样做时看到的错误是:
error: module Test is not loaded but was defined. This happens when you depend on a module in the same context in which it is defined.
这似乎表明由于上述原因这是不可能的。