我的B级派生自A类,如:
class A
..
end
class B < A
...
end
在另一个文件中,我定义了一个变量M
M = B
然后我收到了错误
"NameError: uninitialized constant B".
我刚发现如果我写
M=A
M=B
然后没关系。我似乎必须以某种方式初始化A.
答案 0 :(得分: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
runner.rb:
require './class_def.rb'
M=B
M.talk
调用ruby runner.rb应该产生输出
hello
world
但是我注意到使用RubyFiddle
时出现了同样的错误