Sobes.tech
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