1
到我目前所知的使用Class.new
定義的Ruby類應該與使用class
關鍵字創建的類不應該不同。那麼爲什麼下面的類B和C的行爲不同?使用Class.new時訪問祖先常量的NameError?
class A
TEST = 'A'
def test
TEST
end
end
class B < A
def test
TEST
end
end
C = Class.new(A) {
def test
TEST
end
}
puts 'A: ' + A.new.test # => "A: A"
puts 'B: ' + B.new.test # => "B: A"
puts 'C: ' + C.new.test # => uninitialized constant TEST (NameError)
測試紅寶石1.9.3p327和紅寶石1.8.7p358。
我沒有得到錯誤與紅寶石1.9.2p180(2011-02-18修訂版30909)[i386-darwin9.8.0]。但是Ruby的常量範圍可能非常微妙。 –