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

  • happyjpy

    happyjpy

    22 AĞUSTOS 2009
  • Miles Fisher

    Miles Fisher

    8 NİSAN 2009
  • RickardRick

    RickardRick

    9 Mart 2007