-1
J'ai joué avec des classes singleton dans Ruby et je suis tombé sur un comportement que je ne comprends pas.Crochet hérité: créer une classe singleton différente pour deux sous-classes différentes
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
Ne devrait-il pas créer une classe singleton différente pour B et C? Pourquoi B et C partagent-ils la même classe anonyme?
Alors, à quelle classe appartient la variable de classe '@@ a'? – griest
@griest A 'A'. 'A.class_variable_get (: @@ a) # => 5'. – sawa
Pourquoi '@@ a' est-il assigné à A par opposition à la classe singleton? – griest