Ruby Günlüğü – Gün 10

Hashler (Sözlükler)

Sözlükler oldukça geniş alanlarda kullanılabilirler. Bunu Python’da tecrübe etmiştim. Dizilerden bazı anlarda daha maharetli olacaklardır.

Dizileri en basit anlamıyla, nesneler grubu olarak tanımlayabiliriz, sözlükler için de bu tanım yanlış olmayacaktır.

Diziler, nesnelerin tanımlanmış bir sırada ve biçimde toplu halde bulunmasıdır, Hash yani sözlüklerde durum biraz daha farklı. Sözlükler anahtar-değer mantığı ile çalışır.

Burada 2 adet sözlük öğemiz var. Bir tanesi “isim” diğeri ise “nick”. Ve bu öğeler (anahtarlar), karşılarında ki değere sahip.

Değer döndürmek için, dizilerde olduğu gibi köşeli parantez kullanırız :

Değerleri değiştirken yine dizilerde olduğu gibi assignment yaparız.

Sözlüklerin kullanım alanı çok geniştir demiştim. Sözlüklerde anahtar ve değerler istediğimiz veri tipinde olabilir. Bir diziyi, bir sözlüğe anahtar veya değer yapabiliriz, veya başka bir sözlüğü değer-anahtar yapabiliriz.

Dizi Elemanları Iterasyonu

Daha önce pek çok iterasyon örneği görüştük, şimdi bunu sözlüklerde uygulayalım.

Bu örnekte, sözlüğümüzün anahtar bileşenini x değişkenine eşitledik, değer bileşenini ise y değişkenine eşitledik. Daha sonra interpolate ederek x ve y değişkenlerini kullandık. Interpolation, stringler içerisinde Ruby kodları çalıştırmaya verdiğimiz isimdi.

Anahtarlar – Değerler

Sözlüğün anahtarlarını veya değerlerini ekrana bastırmak oldukça basit iki metodla yapılıyor.

Sözlüklerden eleman silmekte oldukça basittir.

“delete” metoduna oldukça benzeyen bir başka metod ise “delete_if” metodudur. İsminden anlaşılacağı üzere, şartlı silme işlemi yapar.

Daha önce söylediğimiz şu cümleleri tekrar edelim :

Sözlüklerde anahtar ve değerler istediğimiz veri tipinde olabilir. Bir diziyi, bir sözlüğe anahtar veya değer yapabiliriz, veya başka bir sözlüğü değer-anahtar yapabiliriz.

Bu sayede büyük projelerde, geniş çaplı işlerde sözlükler bizim için kullanışlı olur. Ruby’nin pure-object-oriented olması ve dolayısıyla herşeyin bir nesne olması bize bu imkanı sunar.

Sözlük içinde sözlük ve sözlük içinde dizi, sözlük içerisinde string gibi bir kaç  durum için geniş bir örnek yapalım :

Yarın “flow control” ile devam etmek üzere.

~ msdundar

Leave a Reply