-1
我一直在Ruby中使用单例类,并且遇到了一些我不明白的行为。继承的钩子:为两个不同的子类创建不同的单例类
class A
def self.inherited(subclass)
class << subclass
@@a = 5
def a
@@a
end
def a=(value)
@@a = value
end
end
end
end
class B < A
end
class C < A
end
B.a # => 5
C.a # => 5
B.a= 7
C.a # => 7
不应该红宝石创建不同的单类B和C?为什么B和C共享同一个匿名类?
那么,类变量@@ a'属于哪个类? – griest
@griest致'A'。 'A.class_variable_get(:@@ a)#=> 5'。 – sawa
为什么'@@ a'被赋值给A而不是单例类? – griest