Neden Ruby'attr_accessor, attr_reader ve attr_writer s?
Ruby kullanışlı ve rahat gibi tuşları kullanarak örnek değişkenleri paylaşmak için bu yolu vardır
attr_accessor :var
attr_reader :var
attr_writer :var
Neden sadece attr_accessor kullanırsam attr_reader attr_writer seçsin? Performans gibi bir şey şüpheliyim olan var mı? Bir nedeni vardır herhalde, yoksa bu anahtarları değil.
CEVAP
Farklı erişenleri birisi kodunuzu okuma niyetinizi iletişim kurmak için kullanın ve daha doğru kamu API denir ne olursa olsun çalışacak bir sınıf yazmak yapabilirsiniz.
class Person
attr_accessor :age
...
end
Burada, hem okuma hem de yaş yazabilirim bunu görebiliyorum.
class Person
attr_reader :age
...
end
Burada, sadece yaş okuma olabilir görebiliyorum. Bu sınıfın yapıcı tarafından ayarlanır ve sabit kalır sonra düşünün. Bir çevirici (yazar) yaş için vardı ve sınıfı yazılı yaş, bir kez ayarlandıktan sonra, değişmez varsayarak olsaydı, o zaman bir hata kodu bu çevirici arama neden olabilir.
Ama perde arkasında neler oluyor?
EÄŸer yazarsan:
attr_writer :age
Bu çevrilmiş olur:
def age=(value)
@age = value
end
EÄŸer yazarsan:
attr_reader :age
Bu çevrilmiş olur:
def age
@age
end
EÄŸer yazarsan:
attr_accessor :age
Bu çevrilmiş olur:
def age=(value)
@age = value
end
def age
@age
end
Bilerek, burada başka bir yol düşünmek için bile yoktu attr_... yardımcıları, ve yazmak için set kendini yazar mısın artık set daha sınıfınızın gerekli? Örneğin, eğer yaşı okunur olmak gerekirse, aynı zamanda bir yöntem yazılmasına izin yazar mısın?

Ruby attr_accessor nedir?...
Neden Ruby Hariç => e `kurtarmak iç...
Neden ünlem işareti Ruby yöntemler kul...
Neden Ruby 1.9.2 Kaldır "."&...
Neden Ruby bölümü yerine tamsayı ondal...