SORU
27 EYLÜL 2010, PAZARTESİ


Sınıf değişkenleri ve sınıf örnek değişkenleri arasındaki fark?

Herkes sınıf değişkenleri ve sınıf örnek değişkenleri arasındaki farkı söyleyebilir mi?

CEVAP
27 EYLÜL 2010, PAZARTESİ


Bir sınıf değişkeni (@@) sınıfı ve onun torunları arasında paylaşıldı. Bir sınıf örneği değişken (@) sınıfı torunları tarafından paylaşılan değildir.


Sınıf değişkeni (@@)

Hadi bir sınıf değişkeni @@okuduğunuz için ben ve erişenleri ve @@yazdığım bir sınıf Foo var:

class Foo

  @@i = 1

  def self.i
    @@i
  end

  def self.i=(value)
    @@i = value
  end

end

Ve türetilmiş bir sınıf

class Bar < Foo
end

Foo ve Bar @@için aynı değerde olduğunu görüyoruz:

p Foo.i    # => 1
p Bar.i    # => 1

Ve @@ben değişen hem de onlar değişmez

Bar.i = 2
p Foo.i    # => 2
p Bar.i    # => 2

Sınıf örneği değişken (@)

Hadi bir sınıf örneği ile basit bir sınıf değişkeni @ben ve set okuma ve @ben yazmak için:

class Foo

  @i = 1

  def self.i
    @i
  end

  def self.i=(value)
    @i = value
  end

end

Ve türetilmiş bir sınıf

class Bar < Foo
end

Bar @için erişenleri ben devralır, ancak miras değil @ben kendisini öyle görüyoruz:

p Foo.i    # => 1
p Bar.i    # => nil

Bar @@Foo ben etkilemeden ben de ayarlayabilirsiniz:

Bar.i = 2
p Foo.i    # => 1
p Bar.i    # => 2

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Anthony Le

    Anthony Le

    10 EKİM 2006
  • DroidModderX ROOT Master

    DroidModderX

    14 ŞUBAT 2011
  • natescamp

    natescamp

    30 NİSAN 2009