-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