私の現在の知識では、で定義されたRubyクラスは、キーワードClass.new
で作成されたクラスと異なるべきではありません。class
では、なぜ次のクラスBとCの動作が異なるのでしょうか。
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)
ruby1.9.3p327およびruby1.8.7p358でテスト済み。