Ruby Hash nedir? Ruby Hash nasıl kullanılır?

ergin (2539) 8 yıl önce sordu

Ruby programlama dilinde Hash ne anlama gelmektedir? Ruby Hash nedir?

Ruby Hash nasıl kullanılır?

Toplam 1 cevap


ergin (2539) 8 yıl önce cevapladı

Çoğu programlama dilinde Dictionary olarak geçen, Array(dizi) benzeri Key-Value çifti barındıran yine Array'e benzeyen başka bir taşıyıcıya Hash denir. Key-Value olarak dediğimiz yapı;

uzmanim = { "key1" => "value1", "key2"  => "value2", "key3" => "value3", ...}

şeklindedir. Bu syntax'ı yapısı ile kullanır.

uzmanim = { :key1 => "value1", :key2  => "value2", :key3 => "value3", ... }

Bu kullanım arasında da bir fark bulunmamatadır.


Array'deki sıra (index) mantığı burada Key'ler ile oluyor gibi düşünebilirsiniz. Key'ler unique'dir yani bir Hash içinde 2 tane aynı key'den olamaz.

Hash Kullanımı:

araba = {"araba1" => "bmw", "araba2" => "mercedes", "araba3" => "audi" } 

 

Keys, Values, Values_at

Tahmin edeceğiniz gibi Keys ile Hash'e ait Key'leri, Values ile sadece Key'lere karşılık gelen değerleri, Values_at ile verdiğimiz Key'lere ait değerleri alırız.

adsoyad = { "ad" => "ergin", "soyad" => "tüzer" } 
adsoyad.keys                     # => [:ad, :soyad]
adsoyad.values                   # => ["ergin", "tüzer"]
adsoyad.values_at("ad", "soyad") # => ["ergin", "tüzer"]

 

Fetch

Hash içinden sorgu yaparken kullanılır. Eğer olmayan key çağırırsanız Exception oluşur. Aksi takdirde nil   (boş) döner.

araba = {"araba1" => "audi", "araba2" => "bmw"}
araba.fetch("araba1") # "audi" sonucunu verir
araba.fetch("araba3") # KeyError: key not found: :araba3 hatasını verir


Count, Size, Length

Hash'in boyunu / uzunluğunu verirler.

adsoyad= {"ad" => "ergin", "soyad" => "tüzer"}
adsoyad.count  # 2
adsoyad.size   # 2
adsoyad.length # 2

 

Key?, Value?, Has_key?, Has_value?

Soru işareti ile biten method'lar bize her zaman Boolean yani true ya da false döndürür. Hash'in içinde ilgili Key var mı? Value var mı? diye kontrol edebiliriz.

adsoyad = {"ad" => "ergin", "soyad" => "tüzer"} 

adsoyad.key?("ad")             # => true
adsoyad.has_key?("ad")         # => true

adsoyad.key?("ikinciad")       # => false
adsoyad.has_key?("ikinciad")   # => false

adsoyad.value?("ergin")        # => true
adsoyad.has_value?("ergin")    # => true

adsoyad.value?("uzmanim")      # => false
adsoyad.has_value?("uzmanim")  # => false

 

Empty?

Hash'in içinde eleman olup olmadığını öğreniriz.

adsoyad = {"ad" => "ergin", "soyad" => "tüzer"} 
adsoyad.empty?  #true


Shift

Hash'den key-value çiftini silmek için kullanılır. Her seferinde ilk key-value çiftini siler.

adsoyad = { "ad" => "ergin", "soyad" => "tüzer" } 

adsoyad.shift    # ["ad" , "ergin"] silinir

adsoyad = { "soyad" => "tüzer" }  # haline dönüşür.


Delete

Hash'den key kullanarak eleman silmek için delete method'u kullanılır.

adsoyad = { "ad" => "ergin", "soyad" => "tüzer" } 

adsoyad.delete("soyad")         # "tüzer" 

adsoyad = { "ad" => "ergin" }   # halini alır