Intern
Ինչ է hash (HASH) in Ruby?
sobes.tech AI
Պատասխան AI-ից
Hash (Հեշ) Ruby-ում՝ դա կարգավորված զույգերի հավաքածու է՝ " բանալի-արժեք"։ Յուրաքանչյուր եզակի բանալին կապված է որոշակի արժեքի հետ։ Բանալիները սովորաբար նշաններ (Symbol) կամ տողեր (String) են, բայց կարող են լինել ցանկացած օբյեկտներ, որոնց համար իրականացված են eql? և hash մեթոդները։
Հեշի առանձնահատկությունները՝
- Կարգավորվածություն: Ruby 1.9 տարբերակից սկսած՝ հեշերը աջակցում են տարրերի ներդրման կարգին։
- Մուտք դեպի արժեք ըստ բանալիի: Արժեքներին մուտք գործելը արագ է համապատասխան բանալիով։
- Դինամիկ չափս: Հեշերը կարող են ընդլայնվել կամ կրճատվել հավելում կամ հեռացման միջոցով։
- Բացառված կրկնվող բանալիներ: Յուրաքանչյուր բանալի եզակի է մեկ հեշում։
Նմուշներ հեշ ստեղծելու համար՝
# Լիտերալ օգտագործելով
person = { "name" => "Alice", "age" => 30 }
# Բոլորովին ավելի տարածված և արդյունավետ՝ նշաններ բանալիներ
settings = { :theme => "dark", :language => "ru" }
# Կոդավորման ձև՝ բանալի-արժեք զույգերի կարճ ձևով, 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