Örnek değişken Ruby sınıfa karşı sınıf değişkeni
When do Ruby instance variables get set? ama sınıf örnek değişkenleri kullanmaya ne zaman karar veremiyorum bu konuyu okudum.
Sınıf değişkenleri sınıfın tüm nesneleri, değişkenleri bir nesneye ait Örnek tarafından paylaşılıyor. çok Değil oda eğer sınıf değişkenleri varsa sınıf örnek değişkenleri kullanmak için sola
Bana bunları kullanmak için ne zaman bu ikisi arasındaki farkı açıklayabilir misiniz?
kod örneği:
class S
@@k = 23
@s = 15
def self.s
@s
end
def self.k
@@k
end
end
p S.s #15
p S.k #23
Güncelleme
Şimdi, Sınıf, Örnek Değişkenleri kalıtım zinciri geçirilen tasarruf anlıyorum! Herkese teşekkürler!
CEVAP
Bir sınıf örneği değişken:
class Parent
@things = []
def self.things
@things
end
def things
self.class.things
end
end
class Child < Parent
@things = []
end
Parent.things << :car
Child.things << :doll
mom = Parent.new
dad = Parent.new
p Parent.things #=> [:car]
p Child.things #=> [:doll]
p mom.things #=> [:car]
p dad.things #=> [:car]
Sınıf değişkeni:
class Parent
@@things = []
def self.things
@@things
end
def things
@@things
end
end
class Child < Parent
end
Parent.things << :car
Child.things << :doll
p Parent.things #=> [:car,:doll]
p Child.things #=> [:car,:doll]
mom = Parent.new
dad = Parent.new
son1 = Child.new
son2 = Child.new
daughter = Child.new
[ mom, dad, son1, son2, daughter ].each{ |person| p person.things }
#=> [:car, :doll]
#=> [:car, :doll]
#=> [:car, :doll]
#=> [:car, :doll]
#=> [:car, :doll]
Örnek bir sınıf (sınıf örneği) değişken ile alt sınıflar da otomatik olarak onları almak zorunda kalmadan bir şey bu sınıf için ortak (ve tersi) saklayabilirsiniz. Sınıf değişkenleri ile, örnek bir nesneden self.class
yazmak zorunda değil kolaylık var, ve arzu (zaman) ayrıca sınıf hiyerarşisini otomatik paylaşımı.
Ruby Metaprogramming: dinamik örnek de...
Karşı sınıf değişkenleri Python örnek ...
Nasıl ruby string Adı Sınıf bir örnek ...
Nasıl gerçek özel bir örnek değişken y...
Nasıl ruby soyut bir sınıf uygulamak i...