Örnek Değişkenleri
Coddy'nin Ruby Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 3 / 57.
Bir örnek değişkeni @ ile başlar ve bir nesneye aittir. initialize içinde depolanan bir değer, o nesnenin her yöntemi tarafından kullanılabilir durumda kalır ve her örneğin kendi 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 değişkenlerini değiştirebilir; böylece bir nesne başına gelenleri hatırlar. Birlikte, nesnenin instance değişkenleri 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şkenlere 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, onu döndüren bir metot, yani bir okuyucu tanımlar:
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çbir zaman atanmamış bir örnek değişkeni nil değerindedir ve hata oluşturmaz; bu nedenle yanlış yazılmış bir ad sessizce farklı, 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 sonuç Rex is a 3 year old dog olur.
Sağlanan kod, ilk üç girdi satırından (ad, tür, yaş) bir Pet oluşturur, dördüncü satırın belirttiği kadar birthday çağırır ve describe sonucunu yazdırır.
Kodun pet.rb dosyasına yazılmalıdır. main.rb sağlanan girdi/çıktı kodunu içerir ve düzenlenemez.
Kendin dene
require_relative 'pet'
# Sağlanan girdi/çıktı 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