Menu
CoddyTech

Ö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 Woof

Metotlar 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 Dog

Hiç 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]
challenge icon

Görev

Kolay

Pet 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
quiz iconKendini test et

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

Kendi başına pratik yap: Online Ruby derleyicisi