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