Ruby 使用Class.new时访问祖先常量时发生NameError?
据我目前所知,Ruby类是用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
类定义的。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