Ruby 使用Class.new时访问祖先常量时发生NameError?

Ruby 使用Class.new时访问祖先常量时发生NameError?,ruby,nameerror,Ruby,Nameerror,据我目前所知,Ruby类是用类定义的。new应该与用类关键字创建的类没有区别。那么为什么下面的B类和C类行为不同呢 A类 测试='A' def测试 试验 结束 结束 B类“A:A” 将“B:”+B.new.test#=>“B:A” 将'C:'+C.new.test#=>未初始化常量测试(NameError) 使用ruby 1.9.3p327和ruby 1.8.7p358进行测试。导致使用块定义C类,该块的范围是main而不是a 要让它工作: C = Class.new(A) def C.te

据我目前所知,Ruby类是用
类定义的。new
应该与用
关键字创建的类没有区别。那么为什么下面的B类和C类行为不同呢

A类
测试='A'
def测试
试验
结束
结束
B类“A:A”
将“B:”+B.new.test#=>“B:A”
将'C:'+C.new.test#=>未初始化常量测试(NameError)

使用ruby 1.9.3p327和ruby 1.8.7p358进行测试。

导致使用块定义
C
类,该块的范围是
main
而不是
a

要让它工作:

C = Class.new(A)

def C.test
  TEST
end    
或:


class我没有发现ruby 1.9.2p180(2011-02-18修订版30909)[i386-darwin9.8.0]的错误。但是Ruby对常量的范围界定可能相当微妙,这很快。谢谢,斯莱沃!
class << C
    def test
      TEST
    end    
end