Как да създавате и използвате хеши в Ruby

click fraud protection

Масивите не са единственият начин за управление на колекции от променливи в рубин. Друг вид колекция от променливи е хашиш, наричан също асоциативен масив. Хешът е като масив, тъй като това е променлива, която съхранява други променливи. Обаче хешът не е за разлика от масив в това, че съхранените променливи не се съхраняват в определен ред и се извличат с ключ, вместо от позицията им в колекцията.

Създайте хеш с двойки ключ / стойност

Хешът е полезен за съхраняване на така наречените двойки ключ / стойност. Двойката ключ / стойност има идентификатор, за да обозначи коя променлива от хеша искате да получите достъп и променлива, която да се съхранява в тази позиция в хеша. Например, учител може да съхранява оценките на ученика в хеш. Степента на Боб ще бъде достъпна в хеш от клавиша "Bob", а променливата, съхранявана на това място, ще бъде степента на Bob.

Хеш променливата може да бъде създадена по същия начин като променлива от масив. Най-простият метод е да създадете празен хеш-обект и да го запълните с двойки ключ / стойност. Обърнете внимание, че се използва операторът на индекс, но вместо числото се използва името на ученика.

instagram viewer

Не забравяйте, че хешовете са неуредени, което означава, че няма определено начало или край, както има в масив. Така че, не можете да добавите към хеш. Стойностите просто се вмъкват в хеша с помощта на индексния оператор.

#! / usr / bin / env рубин
степени = Hash.new
степени [„Боб“] = 82
степени ["Джим"] = 94
степени [„Били“] = 58
поставя оценки ["Джим"]

Хеш литерали

Точно като масиви, хешовете могат да бъдат създадени с хеш литерали. Хеша литералите използват къдравите скоби вместо квадратни скоби и двойките ключови стойности са свързани =>. Например хешът с един чифт ключ / стойност на Bob / 84 ще изглежда така: {"Боб" => 84}. Допълнителни двойки ключ / стойност могат да бъдат добавени към хеша буквала, като ги разделяте със запетаи. В следващия пример се създава хеш с оценките за редица ученици.

#! / usr / bin / env рубин
grade = {"Bob" => 82,
"Джим" => 94,
"Били" => 58
}
поставя оценки ["Джим"]

Достъп до променливи в хеша

Може да има моменти, когато трябва да получите достъп до всяка променлива в хеша. Все още можете да прегледате променливите в хеша, като използвате всеки цикъл, въпреки че няма да работи по същия начин като използването на всеки цикъл с променливи от масив. Тъй като хешът е нередовен, реда в който всеки ще циклира върху двойките ключ / стойност, може да не е същият като реда, в който сте ги вмъкнали. В този пример, хеш на степените ще бъде цикличен над и отпечатан.

#! / usr / bin / env рубин
grade = {"Bob" => 82,
"Джим" => 94,
"Били" => 58
}
grade.each do | име, степен |
поставя "# {name}: # {grade}"
край
instagram story viewer