Intern
Ruby-ში hash (HASH) რა არის?
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