SORU
5 Mayıs 2009, Salı


Ne zaman Ruby örnek değişkenleri ayarlayın.

class Hello
@hello = "hello"
    def display
    	puts @hello
    end
end

h = Hello.new
h.display

Sınıf yukarıda yarattım. Hiçbir baskı yok. Örnek değişkeni @Merhaba sınıf bildirimi sırasında sanıyordum. Ama çıkış görüntüleme yöntemi aradığımda''. nil Bunu yapmak için doğru yolu nedir?

CEVAP
6 Mayıs 2009, ÇARŞAMBA


Ruby'de örnek değişkenleri özellikle Java gibi başka bir OO dil alışık değilseniz ilk Ruby öğrenme, ne zaman biraz kafa karıştırıcı olabilir.

Sadece bir örnek değişkeni bildiremez.

Ruby'de örnek değişkenler hakkında bilinmesi gereken en önemli şeylerden biri, @ işareti öneki ile gösterimde dışındaonlar hayata bahar atandıkları ilk kez.

class Hello
  def create_some_state
    @hello = "hello"
  end
end

h = Hello.new
p h.instance_variables 

h.create_some_state
p h.instance_variables

# Output
[]
["@hello"]

Yöntemi Object#instance_variables nesne ve örnek değişkenleri listelemek için kullanabilirsiniz.

Normalde “ilan” ve başlatma başlatma yöntemi tüm örnek değişkenler. Başka bir şekilde açıkça belge olan örnek değişkenleri gereken kamuya açık kullanım Modülü yöntemleri attr_accessor (okuma/yazma), attr_writer (yazma) ve attr_reader (okuma). Bu yöntemler listelenen örnek değişkeni için farklı erişimci yöntemleri sentez eder.

class Hello
  attr_accessor :hello
end

h = Hello.new
p h.instance_variables 

h.hello = "hello"
p h.instance_variables

# Output
[]
["@hello"]

Örnek değişkeni hala ** 10 sentez yöntemi kullanılarak tayin olana kadar oluşturulmuş değil.

Kch açıklandığı gibi diğer önemli husus, bir sınıfı bildirirken farklı bağlamlarda etkin farkında olmak gerekir. Bir sınıfı bildirirkenvarsayılan alıcı (öz)en dıştaki kapsamında sınıfını temsil eden nesne olacak kendisi. Dolayısıyla kodunuzu birinci sınıf bir örneği sınıf düzeyinde @hello atarken değişken oluşturur.

Yöntemleri içindeözolacak nesne üzerinde hangi yöntemi çağrılır, bu nedenle denediğiniz yazdırma değer bir örnek değişken adı @hello nesne, yok var (not bu gayet yasal okumak bir örneği mevcut olmayan değişken).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CruzerLite

    CruzerLite

    1 EKİM 2011
  • Kupa World

    Kupa World

    1 EYLÜL 2011
  • Megan Parken

    Megan Parken

    19 Temmuz 2009