1

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

class A
..
end

class B < A
...
end

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

M = B

然后我得到了错误

"NameError: uninitialized constant B".

我只是发现如果我写

M=A
M=B

然后就可以了。看来我必须以某种方式初始化 A 。

4

1 回答 1

0

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

class_def.rb:

class A
  def self.talk
    puts 'hello'
  end
end

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

亚军.rb:

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

调用 ruby​​ runner.rb 应该产生输出

hello
world

但是我注意到使用 RubyFiddle 的相同错误

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

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

于 2013-03-12T18:28:44.887 回答