-1
私はRubyでシングルトンクラスを使いこなしていましたが、私は理解できません。継承されたフック:2つの異なるサブクラスに対して異なるシングルトンクラスを作成する
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