Menu
Coddy logo textTech

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

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

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