【问题标题】:Warning "Redefining module" when file is containing 2 Modules当文件包含 2 个模块时警告“重新定义模块”
【发布时间】:2014-01-30 07:33:41
【问题描述】:

试图弄清楚为什么下面的代码会产生警告

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]

【问题讨论】:

    标签: elixir


    【解决方案1】:

    它与spawn 调用无关。 :) 每次编译文件时,在第一次之后,模块都会被重新定义,因为以前的版本已经存在。在这种情况下没有任何问题,警告是针对您不小心重新定义了您没想到的模块的情况。

    【讨论】:

    • 感谢 Jose,但这很令人困惑...因为 iex 不知道它是错误、警告、通知还是什么...这可能会导致开发人员误入歧途,就好像没有输出一样,开发人员可能会认为它因为重新定义错误..
    • 好点。我已经打开了一个问题,以确保我们在前面加上 warning:。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    • 2019-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多