Программирование на языке Ruby
Шрифт:
Впрочем, было бы проще включить модуль
Определив эти операторы, можно пользоваться ими как обычно:
Может статься, что при сравнении массивов мы столкнемся с необходимостью сравнивать два элемента, для которых оператор
Если и это вас не смущает, то добавим, что сравнение на равенство и неравенство этом случае работает. Объясняется это тем, что объекты разных типов считаются неравными, хотя мы и не можем сказать, какой из них больше.
Наконец, не исключено, что два массива, содержащих несравнимые типы данных, все равно можно сравнить с помощью операторов
8.1.5. Сортировка массива
Самый простой способ отсортировать массив — воспользоваться встроенным методом
Здесь предполагается, что все элементы массива сравнимы между собой. При сортировке неоднородного массива, например
В подобных случаях можно воспользоваться также блочной формой того же метода. Ниже предполагается, что у каждого элемента есть хотя бы метод
Конечно, подобное упорядочение (в данном случае основанное на кодировке ASCII) может оказаться бессмысленным. При работе с неоднородным массивом нужно прежде всего задать себе вопрос, зачем вообще его сортировать. И почему приходится хранить в массиве объекты разных типов?
Описанная методика работает, потому что блок возвращает целое число (-1.0 или 1) при каждом вызове. Если возвращена -1, то есть x меньше у, то два элемента меняются местами. Чтобы отсортировать массив по убыванию, достаточно все го лишь изменить порядок сравнения:
Блоки можно применять и для более сложных сортировок. Предположим, что нужно отсортировать названия книг и фильмов следующим способом: регистр игнорируется, полностью игнорируются пробелы, а также ряд знаков препинания и артикли. Ниже приведен простой пример (и преподаватели английского языка, и программисты будут удивлены таким способом упорядочения по алфавиту).
Бояръ-Аниме. Газлайтер. Том 33
33. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 24
24. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
рейтинг книги
Золотой Лис
8. Кортни
Приключения:
прочие приключения
рейтинг книги
Мы друг друга не выбирали
1. Мы выбираем...
Любовные романы:
остросюжетные любовные романы
прочие любовные романы
современные любовные романы
рейтинг книги
Кол
Фантастика:
ужасы и мистика
рейтинг книги
Весы
Проза:
современная проза
историческая проза
рейтинг книги
Кодекс Охотника. Книга XVII
17. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Бальмануг. (Не) Любовница 2
4. Мир Десяти
Любовные романы:
любовно-фантастические романы
рейтинг книги
Играть... в тебя
3. Звериные повадки Симоновых
Любовные романы:
современные любовные романы
рейтинг книги
Лев Толстой
363. Жизнь замечательных людей
Документальная литература:
биографии и мемуары
рейтинг книги
Бальтазар Косса
Проза:
историческая проза
рейтинг книги
Рухнувший мир
2. Студент
Фантастика:
фэнтези
рейтинг книги
Палачи и киллеры
Энциклопедия преступлений и катастроф
Документальная литература:
публицистика
рейтинг книги
Избранное
Поэзия:
поэзия
рейтинг книги