Sobes.tech
Intern

Rubyдеги hash (HASH) эмне?

sobes.tech AI

AIден жооп

Hash (Hash) Rubyдө — бул "түйүн-баа" деп аталган уюшулган жуптар топтому, анда ар бир уникалдуу ачкыч белгилүү бир баага байланыштуу. Ачкычтар адатта символдор (Symbol) же саптар (String) болот, бирок eql? жана hash методдору ишке ашырылган бардык объекттер болушу мүмкүн.

Hashтин өзгөчөлүктөрү:

  • Тартиптүүлүк: Ruby 1.9 версиясынан бери hashтер элементтердин салынган тартибин колдойт.
  • Ачкыч аркылуу кирүү: Бааларга тез жетүү үчүн ылайыктуу ачкыч колдонулат.
  • Динамикалык өлчөм: Hashтер кеңейе жана кыскара алат элементтердин кошулушу же алынышы менен.
  • Кайталаган ачкычтар жок: Ар бир ачкыч бир Hash ичинде уникалдуу.

Hash түзүү мисалдары:

# Литерал колдонуу
person = { "name" => "Alice", "age" => 30 }

# Символдорду ачкыч катары колдонуу (көбүрөөк жана эффективдүү)
settings = { :theme => "dark", :language => "ru" }

# Ruby 1.9ден баштап колдонулган кыскача жазуу (Key-Value Pair Shorthand)
config = { host: "localhost", port: 8080 }

# Hash.new конструктору аркылуу
empty_hash = Hash.new

Hash менен иштөө негизги операциялар:

Операция Мисал Түшүндүрмө
Баага жетүү person["name"] "name" ачкычы боюнча бааны кайтарат
Кошуу/өзгөртүү person["city"] = "New York" Ачкычка жаңы жуп кошот же маанисин өзгөртөт
Жок кылуу person.delete("age") "age" ачкычы боюнча жупту жок кылат
Өлчөм person.size же person.length Hashтеги жуптардын санын кайтарат
Ачкыч барбы? 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)

# Hash аркылуу өтүү
user_data.each do |key, value|
  puts "#{key}: #{value}"
end