Intern
Ruby-də hash (HASH) nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Ruby-də Hash (Hash) unikal açarların müəyyən dəyərlərə bağlandığı sıralanmış "açar-dəyər" cütlüklərindən ibarət kolleksiyadır. Açarlar adətən simvollar (Symbol) və ya sətirlər (String) olsa da, eql? və hash metodlarını həyata keçirən hər hansı obyekt ola bilər.
Hash-in xüsusiyyətləri:
- Sıralama: Ruby 1.9-dan etibarən, hashlər elementlərin əlavə olunma sırasını saxlayır.
- Açar ilə giriş: Dəyərlərə sürətli giriş, müvafiq açar vasitəsilə həyata keçirilir.
- Dinamik ölçü: Hashlər elementlər əlavə və ya silindikcə genişlənə və ya kiçilə bilər.
- Tək və unikal açarlar: Hər bir açar hash daxilində unikal olur.
Hash yaratma nümunələri:
# Litrala istifadə
şəxs = { "ad" => "Alice", "yaş" => 30 }
# Açar kimi simvollardan istifadə (ən çox yayılmış və səmərəli yol)
ayarlar = { :mövzu => "qaranlıq", :dil => "ru" }
# Ruby 1.9 və yuxarı üçün simvol ilə yazım
konfiq = { host: "localhost", port: 8080 }
# Hash.new konstruktoru ilə
boş_hash = Hash.new
Əsas əməliyyatlar:
| Əməliyyat | Nümunə | Təsviri |
|---|---|---|
| Qiymətə giriş | şəxs["ad"] |
"ad" açarına uyğun dəyəri qaytarır |
| Əlavə və ya dəyişiklik | şəxs["şəhər"] = "New York" |
Cütlük əlavə edir və ya dəyəri dəyişir |
| Silmə | şəxs.delete("yaş") |
"yaş" açarına malik cütlüyü silir |
| Ölçü | şəxs.size və ya şəxs.length |
Hash-dəki cütlüklərin sayını qaytarır |
| Açar yoxlaması | şəxs.key?("ad") |
Hash-də açarın olub-olmadığını yoxlayır |
| Dəyər yoxlaması | şəxs.value?(30) |
Hash-də dəyərin olub-olmadığını yoxlayır |
| Dövr | `şəxs.each { | açar, dəyər |
| Açarlar | şəxs.keys |
Bütün açarların massivini qaytarır |
| Dəyərlər | şəxs.values |
Bütün dəyərlərin massivini qaytarır |
İstifadə nümunəsi:
istifadəçi_məlumatları = {
ad: "Boris",
yaş: 45,
şəhər: "Moskva"
}
# Məlumatlara giriş
puts istifadəçi_məlumatları[:ad] # => Boris
# Yeni sahə əlavə etmək
istifadəçi_məlumatları[:iş] = "Proqramçı"
# Dəyəri dəyişmək
istifadəçi_məlumatları[:yaş] = 46
# Sahəni silmək
istifadəçi_məlumatları.delete(:şəhər)
# Hash üzərində dövr
istifadəçi_məlumatları.each do |açar, dəyər|
puts "#{açar}: #{dəyər}"
end