Книга: Программирование на языке Ruby
8.3. Перечисляемые структуры в общем
Что делает набор перечисляемым? Вообще-то сам тот факт, что это набор. Модуль Enumerable
требует, чтобы был определен стандартный итератор each
. Последовательность обхода не имеет значения, так как даже неупорядоченные наборы, например хэш, могут обладать итераторами.
Кроме того, если предполагается пользоваться методами min
, max
и sort
, то для набора должен быть определен метод сравнения (<=>
). Все это достаточно очевидно.
Итак, перечисляемая структура представляет собой набор, в котором можно производить поиск, который можно обойти и, быть может, отсортировать. В любой определенный пользователем набор, не являющийся подклассом существующего системного класса, имеет смысл подмешивать модуль Enumerable
.
Имейте в виду — все сказанное о какой-то одной перечисляемой структуре относится ко всем. В качестве примеров таких структур можно назвать массив, хэш, дерево и т.д.
Конечно, у каждой структуры есть свои нюансы. Массив — это упорядоченный набор отдельных элементов, а хэш — неупорядоченный набор пар ключ-значение. Понятно, что в каких-то отношениях они будут вести себя по-разному.
Многие методы, с которыми мы познакомились при изучении массивов и хэшей (например, map
и find
), на самом деле определены в модуле Enumerable
. Часто было трудно решить, как подать материал. Любая путаница или неточность — моя вина!..
Массив — наиболее часто употребляемый набор, подмешивающий этот модуль. Поэтому по умолчанию я буду пользоваться в примерах именно массивами.
- Глава 8. Массивы, хэши и другие перечисляемые структуры
- 1.4 Структуры данных, связанные с драйверами устройств Windows
- ВЛОЖЕННЫЕ СТРУКТУРЫ
- Практическая работа 35. Создание структуры документа и вставка оглавления
- Разработка структуры базы данных
- 6.2. Типы и структуры данных
- Ветвящиеся структуры – архитектура мира растений
- Построение структуры веб-страницы
- Фундаментальные алгоритмы и структуры данных в Delphi
- 4.2. Представление базовой структуры программы
- 14. Структуры и другие типы данных
- Структуры данных процесса