Sobes.tech
Intern

Ruby'de hash (HASH) nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Ruby'de Hash (Hash), anahtar-değer çiftlerinden oluşan sıralı bir koleksiyondur ve her benzersiz anahtar belirli bir değere bağlıdır. Anahtarlar genellikle semboller (Symbol) veya dizgiler (String) olsa da, eql? ve hash metodlarını uygulayan herhangi bir nesne olabilir.

Hash özellikleri:

  • Sıralama: Ruby 1.9'dan itibaren, hashler eklenme sırasını korur.
  • Anahtar ile erişim: Değerlere, karşılık gelen anahtar kullanılarak hızlıca erişilir.
  • Dinamik boyut: Hashler, öğe ekleme veya çıkarma ile genişleyebilir veya daralabilir.
  • Anahtar tekrarına izin yok: Her anahtar, bir hash içinde benzersizdir.

Hash oluşturma örnekleri:

# Literal kullanımı
kisi = { "isim" => "Alice", "yaş" => 30 }

# Anahtar olarak semboller kullanımı (daha yaygın ve etkilidir)
ayarlar = { :tema => "koyu", :dil => "ru" }

# Ruby 1.9 ve sonrası için sembollerle anahtar notasyonu
konfig = { host: "localhost", port: 8080 }

# Hash.new yapıcısı ile
boş_hash = Hash.new

Hash ile temel işlemler:

İşlem Örnek Açıklama
Değere erişim kisi["isim"] "isim" anahtarına karşılık gelen değeri döner
Ekleme/değiştirme kisi["şehir"] = "New York" Çift ekler veya anahtarın değerini değiştirir
Silme kisi.delete("yaş") "yaş" anahtarına sahip çifti siler
Boyut kisi.size veya kisi.length Hashteki çift sayısını döner
Anahtar kontrolü kisi.key?("isim") Anahtarın hash içinde olup olmadığını kontrol eder
Değer kontrolü kisi.value?(30) Değerin hash içinde olup olmadığını kontrol eder
Döngü `kisi.each { anahtar, değer
Anahtarlar kisi.keys Tüm anahtarların dizisini döner
Değerler kisi.values Tüm değerlerin dizisini döner

Kullanım örneği:

kullanici_verileri = {
  isim: "Boris",
  yas: 45,
  sehir: "Moskova"
}

# Verilere erişim
puts kullanici_verileri[:isim]   # => Boris

# Yeni alan ekleme
kullanici_verileri[:meslek] = "Geliştirici"

# Değeri değiştirme
kullanici_verileri[:yas] = 46

# Alan silme
kullanici_verileri.delete(:sehir)

# Hash üzerinde döngü
kullanici_verileri.each do |anahtar, değer|
  puts "#{anahtar}: #{değer}"
end