Konuyu Değerlendir
  • 0 Oy - 0 Ortalama
  • 1
  • 2
  • 3
  • 4
  • 5
Ruby Nesnenin İlklendirilmesi
#1
Ruby Nesnenin İlklendirilmesi

Nesnenin İlklendirilmesi


Geçen bölümdeki Meyve sınıfı, biri meyvenin çeşidini diğeri de niteliğini açıklayan iki örnek değişkene sahipti. Bunu yapmamızın nedeni bir kaç meyve için karakteristiğin önemli olmamasıydı. Genel bir inspect yöntemi oluşturmaktı. Ruby örnek değişkenlerin her zaman hazırlanmış olduğunu garanti eden bir yol sunuyor.
initialize yöntemi
Ruby yeni bir nesne yaratıldığı zaman initialize denen bir yöntem arar ve çalıştırır. Yapabileceğimiz basit şeylerden biri her örnek değişkene öntanımlı bir initialize yöntemi koymak ve böylece inspect yöntemine söyleyebilecek bir şeyler sağlamaktır.


ruby> class Meyve
   |   def initialize

   |     @cesit = "elma"

   |     @nitelik = "olgun"

   |   end

   | end

  nil

ruby> f4 = Meyve.new

  "olgun bir elma"


Öntanımlı değerlerin değiştirilmesi
Bazen öntanımlı değerlerin pek de anlamlı olmadığı zamanlar olabilir. Öntanımlı bir meyve çeşidi gibi birşey olabilir mi? Her meyvenin yaratıldığı zaman kendi çeşidini belirlemesi daha tercih edilebilir bir durumdur. Bunu yapmak için initialize yöntemine bir argüman ekleriz. Burada bahsetmeyeceğimiz nedenlerden dolayı new'e verdiğiniz her argüman initialize yöntemi tarafından alınmış olur.


ruby> class Meyve
   |   def initialize( k )

   |     @cesit = k

   |     @nitelik = "olgun"

   |   end

   | end

  nil

ruby> f5 = Meyve.new "mango"

  "olgun bir mango"

ruby> f6 = Meyve.new

ERR: (eval):1:in `initialize': wrong # of arguments(0 for 1)


Esnek ilklendirme
Yukarıda gördüğümüz gibi bir argümanı initialize yöntemi ile ilişkilendirirseniz boş değer vermeniz durumunda hatayla karşılaşırsınız. Daha düşünceli davranmak istersek, değer verildiği zaman o değeri kullanabilir, verilmediği zamansa öntanımlı bir değer atayabiliriz.


ruby> class Meyve
   |   def initialize( k="elma" )

   |     @cesit = k

   |     @nitelik = "olgun"

   |   end

   | end

  nil

ruby> f5 = Meyve.new "mango"

  "olgun bir mango"

ruby> f6 = Meyve.new

  "olgun bir elma"


Öntanımlı değerleri sadece initialize için değil tüm yöntemler 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, yöntemleri aşırı yüklemeyi sağlayan nesne yansıtmaya (object reflection) ve değişken uzunluklu argüman listesine izin verir.

Gelecek Yapay Zeka İle Gelecek
Alıntı


Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi

Hakkımızda
    Yapay Zeka Forum , Yapay Zekayı Türkiye'ye tanıtmak ve bu alanda Türkçe kaynak sıkıntısını gidermek ve aynı zamanda Yapay Zekaya ilgi duyan tüm kişileri bir araya getirmek amacıyla kurulmuştur.

Yapay Zeka Forum


yapay zeka

,

yapay sinir ağı

,

yapay sinir ağları

,

derin öğrenme

,

makine öğrenmesi