在Elixir mix应用程序中,我应该将模块放在哪里?
我有一个简单的项目,我已经开始调用测试。所以我做了:在Elixir mix应用程序中,我应该将模块放在哪里?,elixir,Elixir,我有一个简单的项目,我已经开始调用测试。所以我做了: mix new test 我得到了通常的目录树。在lib目录中,是test.ex。但是我希望test.ex使用一个名为Mystuff的模块,但是我不知道把Mystuff.ex放在哪里,因为我得到了一个编译错误 下面是test.ex(在test/lib目录中): 下面是我在test/lib中也包含的mystuff.ex: defmodule Test.Mystuff do def bye do IO.puts "bye" en
mix new test
我得到了通常的目录树。在lib目录中,是test.ex。但是我希望test.ex使用一个名为Mystuff的模块,但是我不知道把Mystuff.ex放在哪里,因为我得到了一个编译错误
下面是test.ex(在test/lib目录中):
下面是我在test/lib中也包含的mystuff.ex:
defmodule Test.Mystuff do
def bye do
IO.puts "bye"
end
end
但是,如果我从项目的主目录(test)运行“iex-SMIX”,我会得到:
那么我的名字是不是有问题?使用错误的东西?将某些内容放入错误的目录中?将
使用Mystuff
替换为别名测试。Mystuff
您正在两次定义测试.Mystuff
模块。一次在lib/test/mystuff.ex
中,另一次在lib/mystuff.ex
中。更改其中一个名称,它就会编译。删除重复的模块后,您还需要了解它们之间的区别注意:测试将具有.exs
扩展名,以防止自动编译<如果没有ExUnit
本身和doctest
宏,code>ExUnit测试就没有意义。
defmodule Test.Mystuff do
def bye do
IO.puts "bye"
end
end
Erlang/OTP 19 [erts-8.2] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]
Compiling 3 files (.ex)
== Compilation error on file lib/test/mystuff.ex ==
** (CompileError) lib/test/mystuff.ex:1: cannot define module Test.Mystuff because it is currently being defined in lib/mystuff.ex:1
(stdlib) erl_eval.erl:670: :erl_eval.do_apply/6