Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Elixir mix应用程序中,我应该将模块放在哪里?_Elixir - Fatal编程技术网

在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