-1
Ich habe mit Singleton-Klassen in Ruby herumalbern und ich stieß auf etwas Verhalten, das ich nicht verstehe.Inherited Hook: Erstellen Sie verschiedene Singleton-Klasse für zwei verschiedene Unterklassen
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
Sollte Ruby nicht eine andere Singleton-Klasse für B und C erstellen? Warum teilen sich B und C dieselbe anonyme Klasse?
Also zu welcher Klasse gehört die Klassenvariable '@@ a'? – griest
@griest Zu 'A'. 'A.class_variable_get (: @@ a) # => 5'. – sawa
Warum wird '@@ a 'im Gegensatz zur Singleton-Klasse A zugewiesen? – griest