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