![]() Önceki |
![]() İçindekiler |
![]() Sonraki |
| Ruby Kullanıcı Kılavuzu | Nesne 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 metoduRuby 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" |
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) |
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.
![]() Önceki |
![]() İçindekiler |
![]() Sonraki |