当文件包含2个模块时,警告“重新定义模块”

时间:2014-01-28 05:54:44

标签: elixir

试图找出下面代码产生警告的原因

defmodule A do                                                                                                                                                
 def greet do
   IO.puts "Inside A"
 end
end

defmodule B do
  def greet do
    IO.puts "Inside B"
  end
end

spawn(A, :greet, [])

输出

iex(14)> c("te.ex")
 te.ex:1: redefining module A
 te.ex:7: redefining module B
 Inside A
 [B, A]

1 个答案:

答案 0 :(得分:15)

spawn电话无关。 :)每次编译文件时,在第一次之后,模块将被重新定义,因为先前的版本已经存在。在这种情况下没有任何错误,对于您不小心重新定义您不期望的模块的情况,会出现警告。