Örnek Değişkenleri
Coddy'nin Ruby Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 3 / 57.
Örnek değişken @ ile başlar ve tek bir nesneye aittir. initialize içinde saklanan bir değer, o nesnenin her yöntemi tarafından kullanılabilir ve her örneğin kendine ait bir kopyası vardır:
class Dog
def initialize(name)
@name = name
end
def speak
"#{@name} says Woof"
end
end
rex = Dog.new("Rex")
bella = Dog.new("Bella")
puts rex.speak
puts bella.speakÇıktı:
Rex says Woof
Bella says WoofMetotlar instance_variables değerlerini değiştirebilir, böylece bir nesne başına gelenleri hatırlar. Birlikte, instance_variables nesnenin durumunu oluşturur:
class Counter
def initialize
@count = 0
end
def increment
@count += 1
end
def report
"count is #{@count}"
end
end
clicks = Counter.new
clicks.increment
clicks.increment
puts clicks.reportÇıktı:
count is 2Örnek değişkenlerine nesnenin dışından erişilemez. Dışarıdaki kod yalnızca metotları çağırabilir; bu nedenle bir değeri paylaşmak isteyen sınıf, bu değeri döndüren bir metot tanımlar; buna okuyucu denir:
class Dog
def initialize(name)
@name = name
end
def name
@name
end
end
rex = Dog.new("Rex")
puts rex.name
begin
rex.age
rescue NoMethodError => e
puts e.message
endÇıktı:
Rex
undefined method `age' for an instance of DogHiç atanmamış bir örnek değişkeni nil değerindedir ve hata vermez; bu nedenle yanlış yazılmış bir ad, sessizce farklı ve boş bir değişkeni okur. instance_variables, bir nesnenin gerçekten sahip olduğu değişkenleri listeler:
class Lamp
def initialize
@on = false
end
def status
@onn.inspect
end
end
lamp = Lamp.new
puts lamp.status
p lamp.instance_variablesÇıktı:
nil
[:@on]Görev
KolayPet sınıfını tamamla. initialize(name, species, age) üç değeri saklar, birthday yaşa bir yıl ekler ve describe tek bir cümle döndürür: adı Rex, türü dog ve yaşı 3 olan bir evcil hayvan için Rex is a 3 year old dog döner.
Verilen kod, ilk üç girdi satırından (ad, tür, yaş) bir Pet oluşturur, birthday metodunu dördüncü satırda belirtilen sayıda çağırır ve describe sonucunu yazdırır.
Kodunu pet.rb dosyasına yaz. main.rb, verilen girdi/çıktı kodunu içerir ve düzenlenemez.
Kendin dene
require_relative 'pet'
# Sağlanan giriş/çıkış kodu: olduğu gibi bırakın
input = []
while (line = gets)
input << line.chomp
end
pet = Pet.new(input[0], input[1], input[2].to_i)
input[3].to_i.times { pet.birthday }
puts pet.describe
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1Sınıflar ve Nesneler
Dosyalarla ÇalışmaSınıf TanımlamaÖrnek DeğişkenleriMetotlar ve selfto_s ve inspectÖzet - Kütüphane Kartı7Çok Biçimlilik ve Ördek Tiplemesi
Çok BiçimlilikÖrdek TiplemesiSoyut Metotlarcase ve SınıflarTekrar - Ödeme Yöntemleri2Erişimciler ve self
Okuyucular ve YazıcılarÖzel Setter'larMetotlarda selfKimlik ve EşitlikTekrar - Kişi Listesi5Kalıtım
Alt sınıflarMetotları geçersiz kılmasuper çağrısıis_a? ve üst sınıflarTekrar - Personel Maaşları8Özel Metotlar
Eşitlik ve hashOperatör Metotlarıİndeksleme ve EklemeÖzel KoleksiyonlarTekrar - Kesirler11Proje: Kütüphane Yönetimi
Kitaplar ve ÜyelerKitap Ödünç Alma3Sınıf Metotları ve Değişkenleri
Sınıf MetotlarıSınıf Örnek DeğişkenleriSabitlerFabrika MetotlarıTekrar - Kupon KodlarıKendi başına pratik yap: Online Ruby derleyicisi