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

  • erikbjgn's channel

    erikbjgn's c

    12 Mayıs 2008
  • mist64

    mist64

    30 Mayıs 2006
  • Munchkin the Teddy Bear

    Munchkin the

    30 EYLÜL 2011