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