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
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).
Nasıl bir modülü başlatılamıyor'r...
Mac OS X Lion üzerinde ortam değişkenl...
'DateTime, zaman Damgası, Zaman v...
Nasıl Ruby DateTime için bir unix zama...
Ruby Programı, biraz zaman beklesin...