NameError:访问派生类名称时未初始化的常量



我有从类A派生的类B,如:

class A
..
end
class B < A
...
end

在另一个文件中我定义了一个变量M

M = B

然后我得到错误

"NameError: uninitialized constant B".

我刚发现如果我写

M=A
M=B

那就好了。似乎我必须以某种方式初始化A

由于这些文件与rails没有关系,我们假设它们是系统中任意文件夹中的两个独立文件。假设它们在同一个目录中。

class_def.rb:

class A
  def self.talk
    puts 'hello'
  end
end
class B < A
  def self.talk
    super()
    puts 'world'
  end
end

runner.rb:

require './class_def.rb'
M=B
M.talk

调用ruby runner。Rb应该产生输出

hello
world

然而,我注意到同样的错误使用RubyFiddle

调用方法http://rubyfiddle.com/riddles/1d8e2

不调用方法http://rubyfiddle.com/riddles/1d8e2/

相关内容

  • 没有找到相关文章

最新更新