Ruby ile Gelişmiş Nesne Yönetimi

Merhabalar,

Bir önceki yazım olan Ruby ile Dosya Ä°ÅŸlemleri‘ne gelen yorum nedeni ile uzmanlara yönelik bir yazı yazma gereÄŸi hissettim. Bu yazımın amacı, çalışma zamanında ruby’nin nesneleri nasıl yönettiÄŸini sizlerle paylaÅŸmak. Öncelikle karşımıza çıkacak olan problemlerden biraz bahsedelim ve daha sonra bunların çözümlerini yapalım.

ÖrneÄŸin; elimizde çok özel bir karakter setimiz olsun. Bu öyle bir karakter setiki, içerisinde “,” ler ile ayrılmış olan Id’ler olsun “1200,12254,2554,2525,2527,2556” gibi. Ve biz bu string içerisinde Id’leri aramak istiyoruz. Hem de kolay bir ÅŸekilde aramak istiyoruz, her seferinde virgüller ile boÄŸuÅŸmak istemiyoruz, iÅŸte bunu istiyoruz :)
[ruby]
idList = “1200,12254,2554,2525,2527,2556”
puts idList.include?(“1225”) # Yok ama 12254 nedeni ile bulur
class <alias_method :old_include?, :include? satırını açıklamam gerekiyor. Bu satırın yaptığı iş aslında basit fakat diğer dillerde pek de bulunmayan bir özellik olduğundan garip karşılanabilir. Bu satır include? methoduna old_include? adında bir takma ismini takar, böylece biz def include?(value) deyimi ile include? methodunu ezerken eski methoda olaran erişimimizi kaybetmemiş oluruz. Bu nedenle bizim yazdığımız method içerisinde old_include? deyimi ile eski include? methoduna erişim sağlarız.

Görüldüğü gibi herhangi bir sınıfının tamamı üzerinde veya herhangi bir anda yaratılmış, herhangi özel bir nesneye de çalışma zamanında müdahale edebilir, değişiklik yapabiliriz.

* Ek olarak .NET 2.0’da yeni bir özellik olarak eklenen “partial class” desteÄŸi, Ruby’de de mevcuttur. (Tüm sınıfların bu desteÄŸi vardır, herhangi bir anahtar sözcük ile tanımlama yapmaya gerek yoktur.)

Kolay gelsin :)

Ruby ile GeliÅŸmiÅŸ Nesne Yönetimi” üzerine 2 yorum

  1. iyi günler ip uçlarınızı okdum ancak bilgisayarımdaki problemi hala çözemedim hala bana aynı idlist hatasını veriyor ve başlangıç menüsü dahil hiç bir program gözükmüyor sadece arka plan görünümde bunun bir çözümü var mı çok merak ediyorum

  2. Ee, iyi günler, tam olarak anlamasamda, yorumu yaptığınız yazıdaki örnekleri tekrar denedim. Herhangi bir sorun ile karşılaşmadım. Aldığınız hatayı biraz daha detaylandırırsanız size yardımcı olabilirim..

    Kolay gelsin..

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir