Neden Ruby'attr_accessor, attr_reader ve attr_writer s? | Netgez.com
SORU
18 ÅžUBAT 2011, Cuma


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
18 ÅžUBAT 2011, Cuma


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?

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013
  • Glyn Dewis

    Glyn Dewis

    25 AÄžUSTOS 2007
  • SunsetTrance

    SunsetTrance

    20 EYLÜL 2008