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

  • ibebrent

    ibebrent

    23 Temmuz 2007
  • maxman.tv

    maxman.tv

    29 EKİM 2013
  • TecnoTutosPC

    TecnoTutosPC

    19 Kasım 2012