Поиск

Хэши

Хэши — третий основной тип данных в Perl. Первый — это скаляры, предназначенные для хранения одиночных значений произвольного типа, и размер. Второй — массивы, представляющие собой коллекции скаляров. Массив может содержать любое количество элементов, но поиск в массиве определенного элемента зачастую связан с последовательным перебором всех элементов массива.

Хэши — еше один вид коллективных данных. Как и массивы, хэши представляют собой коллекцию скаляров. Разница между ними состоит в том, что доступ к элементам хэша осуществляется по имени, а не с помощью числовых индексов, как в массивах. Элементы хэша состоят из двух частей — ключа и значения. Ключ идентифицирует элемент хэша, а значение содержит данные, связанные с этим ключом. Такая взаимосвязь описывается термином пара ключ-значение.

Подобные структуры данных как нельзя лучше подходят для многих приложений. Например, для хранения информации о всех водительских лицензиях в некотором регионе удобно в качестве ключа использовать их номера, поскольку номер лицензии конкретного водителя уникален. С этими ключами можно связать данные о водителе: тип лицензии, адрес, возраст и т.д. Каждая водительская лицензия будет представлена отдельным элементом хэша с номером и необходимой информацией, заданной в виде пары ключ-значение. Вот еще примеры других хэш-подобных структур данных: инвентарные книги, медицинские карточки, телефонные счета, дисковая файловая система, музыкальные коллекции на компакт-дисках, библиотечные каталоги и многое, многое другое.

Хэши в Perl могут содержать произвольное количество элементов, во всяком случае, насколько это позволяют ресурсы системной памяти. Хэши изменяют свои размеры по мере того, как к ним добавляются новые элементы или удаляются старые. Доступ к индивидуальному элементу хэша происходит очень быстро и не сильно замедляется с ростом хэша. Это означает, что Perl комфортно чувствует себя и с хэшем из 10, и из 100 000 элементов. Ключи хэша могут быть произвольной длины, т.е. они являются обыкновенными скалярами. Данные также могут быть произвольной длины.

Раньше хэши в Perl и в других языках программирования назывались ассоциативными массивами. Этот термин означал, что ключи элементов связаны с их значениями. Но поскольку программисты на Perl — люди немногословные, они придумали более короткий термин для обозначения ассоциативного массива — хэш.

Переменные-хэши обозначаются в Perl символом процента (%). Их имена не пересекаются с именами массивов и скаляров. Например, в программе может существовать хэш %а, массив @а и скаляр $а. Каждое из этих имен относится к самостоятельной переменной.

Основные темы этого занятия.

  • Создание хэша.
  • Вставка и удаление элементов хэша.
  • Использование хэша для обработки массивов.