Sobes.tech
Intern

Hash (HASH) дар Ruby чӣ аст?

sobes.tech AI

Ҷавоб аз AI

Hash (Ҳеш) дар Ruby маҷмӯаи муташаккил аз ҷуфтҳои "калид-арзиш" мебошад, ки дар он ҳар калиди беназир бо арзиши муайян пайваст аст. Калидҳо одатан рамзҳо (Symbol) ё сатрҳо (String) мебошанд, аммо метавонанд ҳар гуна объектҳо бошанд, ки методҳои eql? ва hash-ро иҷро мекунанд.

Хусусиятҳои ҳеш:

  • Тартибпазирӣ: Аз нусхаи Ruby 1.9, ҳешҳо тартиби ворид кардани элементҳоро дастгирӣ мекунанд.
  • Дастрасӣ ба калид: Дастрасӣ ба арзишҳо ба суроғаи калид зуд аст.
  • Андозаи динамикӣ: Ҳешҳо метавонанд васеъ ё кӯтоҳ шаванд дар асоси илова ё хориҷ кардани элементҳо.
  • Бе такрор кардани калидҳо: Ҳар калид дар дохили ҳеш беназир аст.

Маслиҳатҳои эҷоди ҳеш:

# Истифодаи литрал
person = { "name" => "Alice", "age" => 30 }

# Истифодаи рамзҳо ҳамчун калид (бештар ва муассиртар)
settings = { :theme => "dark", :language => "ru" }

# Нотация дар услуби калид-арзиш (Key-Value Pair Shorthand), аз Ruby 1.9
config = { host: "localhost", port: 8080 }

# Бо истифода аз конструктори Hash.new
empty_hash = Hash.new

Амалиётҳои асосӣ бо ҳешҳо:

Амалиёт Маслҳат Тавсиф
Дастрасӣ ба арзиш person["name"] Арзишро дар асоси калид "name" бармегардонад
Илова/тағйирот person["city"] = "New York" Ҷуфтро илова мекунад ё арзишро тағйир медиҳад
Баъдгирӣ person.delete("age") Ҷуфтро дар асоси калид "age" хориҷ мекунад
Андоза person.size ё person.length Шумораи ҷуфтҳоро дар ҳеш бармегардонад
Санҷиши калид person.key?("name") Санҷиш мекунад, ки калид дар ҳеш ҳаст ё не
Санҷиши арзиш person.value?(30) Санҷиш мекунад, ки арзиш дар ҳеш ҳаст ё не
Итерросия `person.each { key, value
Калидҳоро баргардонед person.keys Масиви ҳамаи калидҳоро бармегардонад
Арзишҳоро баргардонед person.values Масиви ҳамаи арзишҳоро бармегардонад

Маслиҳат барои истифода:

user_data = {
  name: "Борис",
  age: 45,
  city: "Москва"
}

# Дастрасӣ ба маълумот
puts user_data[:name]   # => Борис

# Илова кардани майдони нав
user_data[:job] = "Разработчик"

# Тағйир додани арзиш
user_data[:age] = 46

# хориҷ кардани майдон
user_data.delete(:city)

# Итерросия дар ҳеш
user_data.each do |key, value|
  puts "#{key}: #{value}"
end