Intern
Ruby'da hash (HASH) nima?
sobes.tech AI
AIdan javob
Ruby'da Hash (Hash) — bu kalit-qiymat juftliklaridan tashkil topgan tartiblangan to'plam bo'lib, har bir noyob kalitga muayyan qiymat bog'langan. Kalitlar odatda Symbol yoki String bo'lishi mumkin, ammo eql? va hash metodlarini amalga oshiradigan har qanday ob'ekt bo'lishi mumkin.
Hashning xususiyatlari:
- Tartib: Ruby 1.9 dan boshlab, hashlar elementlarni qo'shilish tartibida saqlaydi.
- Kalit bo'yicha kirish: Qiymatlarga kalit yordamida tez kirish mumkin.
- Dinamik o'lcham: Hashlar elementlar qo'shilishi yoki olib tashlanishi bilan kengayishi yoki qisqarishi mumkin.
- Takroriy kalitlar yo'q: Har bir kalit hash doirasida yagona bo'lishi kerak.
Hash yaratish misollari:
# Literal yordamida
shaxs = { "ism" => "Alice", "yosh" => 30 }
# Kalit sifatida symbolardan foydalanish (eng keng tarqalgan va samarali usul)
sozlamalar = { :tema => "qorong'i", :til => "ru" }
# Ruby 1.9+ uslubida kalit-qiymat yozuvi
konfiguratsiya = { host: "localhost", port: 8080 }
# Hash.new konstruktoridan foydalanish
bo'sh_hash = Hash.new
Hash bilan asosiy amallar:
| Amallar | Misol | Tavsifi |
|---|---|---|
| Qiymatga kirish | shaxs["ism"] |
"ism" kalitiga mos qiymatni qaytaradi |
| Qo'shish / o'zgartirish | shaxs["shahar"] = "New York" |
Juftlik qo'shadi yoki kalit qiymatini o'zgartiradi |
| O'chirish | shaxs.delete("yosh") |
"yosh" kalitiga ega juftlikni o'chiradi |
| Hajm | shaxs.size yoki shaxs.length |
Hashdagi juftliklar sonini qaytaradi |
| Kalitni tekshirish | shaxs.key?("ism") |
Hashda kalit mavjudligini tekshiradi |
| Qiymatni tekshirish | shaxs.value?(30) |
Hashda qiymat mavjudligini tekshiradi |
| Takrorlash | `shaxs.each { | kalit, qiymat |
| Kalitlar | shaxs.keys |
Barcha kalitlarning massivini qaytaradi |
| Qiymatlar | shaxs.values |
Barcha qiymatlarning massivini qaytaradi |
Foydalanish misoli:
foydalanuvchi_ma'lumotlari = {
ism: "Boris",
yosh: 45,
shahar: "Moskva"
}
# Ma'lumotlarga kirish
puts foydalanuvchi_ma'lumotlari[:ism] # => Boris
# Yangi maydon qo'shish
foydalanuvchi_ma'lumotlari[:kasb] = "Dasturchi"
# Qiymatni o'zgartirish
foydalanuvchi_ma'lumotlari[:yosh] = 46
# Maydonni o'chirish
foydalanuvchi_ma'lumotlari.delete(:shahar)
# Hash bo'yicha aylanma
foydalanuvchi_ma'lumotlari.each do |kalit, qiymat|
puts "#{kalit}: #{qiymat}"
end