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

  • dhcrr's channel

    dhcrr's chan

    2 Ocak 2007
  • Justin Schenck

    Justin Schen

    24 Kasım 2006
  • Turkish Airlines

    Turkish Airl

    11 AĞUSTOS 2006