erisgecler
Önceki
İçindekiler
İçindekiler
Ve başka şeyler
Sonraki

 Ruby Kullanıcı KılavuzuNesne Hazırlaması 

Geçen bölümdeki Fruitinspect metodu oluşturmaktı. Ruby örnek değişkenlerin her zaman hazırlanmış olduğunu garanti eden bir yol sunuyor.

initialize metodu

Ruby yeni bir nesne yaratıldığı zaman initialize denen bir metot arar ve çalıştırır.Yapabilceğimiz basit şeylerden biri her örnek değişkene varsayılan bir initialize metodu koymak ve böylece inspect metoduna söyleyebilecek bi şeyler sağlamaktır.

ruby> class Fruit
    |   def initialize
    |     @kind = "apple"
    |     @condition = "ripe"
    |   end
    | end
   nil
ruby> f4 = Fruit.new
   "a ripe apple"

Varsayılan değerleri değiştirmek

Bazen varsayılan değerlerin pek de anlamlı olmadığı zamanlar olabilir. Varsayılan bir meyve çeşidi gibi birşey olabilir mi? Her meyve parçasının yaratıldığı zaman kendi türünü belirlemesi daha tercih edilebilir bir durumdur. Bunu yapmak için initialize metoduna ek bir argüman ekleriz. Burada bahsetmeyeceğimiz nedenlerden dolayı new'e verdiğiniz her argüman initialize metodu tarafından alınmış olur.

ruby> class Fruit
    |   def initialize( k )
    |     @kind = k
    |     @condition = "ripe"
    |   end
    | end
   nil
ruby> f5 = Fruit.new "mango"
   "a ripe mango"
ruby> f6 = Fruit.new
ERR: (eval):1:in `initialize': wrong # of arguments(0 for 1)

Esnek hazırlama

Yukarıda gördüğümüz gibi bir argümanı, initialize metodu ile ilişkilendirirseniz boş argüman vermeniz durumunda hatayla karşılaşırsınız. Daha düşünceli davranmak istersek, argüman verildiği zaman kullanabilir, verilmediği zamansa varsayılan değer atayabiliriz.

ruby> class Fruit
    |   def initialize( k="apple" )
    |     @kind = k
    |     @condition = "ripe"
    |   end
    | end
   nil
ruby> f5 = Fruit.new "mango"
   "a ripe mango"
ruby> f6 = Fruit.new
   "a ripe apple"

Varsayılan argüman değerlerini sadece initialize için değil tüm metotlar için uygulayabilirsiniz.

Bazen bir nesneyi hazırlamak için birçok yol hazırlamak yararlı olabilir. Bu kılavuzun kapsamının dışında olmasına rağmen Ruby, beraber metotları aşırı yüklemeyi sağlayan nesne yansımasına (object reflection) ve değişken uzunluklu argüman listesine izin verir.


erisgecler
Önceki
İçindekiler
İçindekiler
Ve başka şeyler
Sonraki