Программирование на языке Ruby
Шрифт:
6.2. Диапазоны
Понятие диапазона интуитивно понятно, но и у него имеются некоторые неочевидные особенности и способы применения. Одним из самых простых является числовой диапазон:
Оператор
Но диапазоны могут состоять не только из целых чисел — более того, не только из чисел. Началом и концом диапазона в Ruby может быть любой объект. Однако, как мы вскоре увидим, не все диапазоны осмыслены или полезны.
Основные операции над диапазоном — обход, преобразование в массив, а также выяснение, попадает ли некоторый объект в данный диапазон. Рассмотрим разнообразные варианты этих и других операций.
6.2.1. Открытые и замкнутые диапазоны
Диапазон называется замкнутым, если включает конечную точку, и открытым — в противном случае:
Нельзя сконструировать диапазон, который не включал бы начальную точку. Можно считать это ограничением языка.
6.2.2. Нахождение границ диапазона
Методы
Метод
6.2.3. Обход диапазона
Обычно диапазон можно обойти. Для этого класс, которому принадлежат границы диапазона, должен предоставлять осмысленный метод
Пока все хорошо. И тем не менее будьте очень осторожны при работе со строковыми диапазонами! В классе
Предыдущие примеры похожи, но ведут себя по-разному. Отчасти причина в том, что границы второго диапазона — строки разной длины. Мы ожидаем, что в диапазон входят строки
При обходе диапазона
А что сказать по поводу диапазонов чисел с плавающей точкой? Такой диапазон можно сконструировать и, конечно, проверить, попадает ли в него конкретное число. Это полезно. Но обойти такой диапазон нельзя, так как метод
Почему для чисел с плавающей точкой нет метода
6.2.4. Проверка принадлежности диапазону
Зачем нужен диапазон, если нельзя проверить, принадлежит ли ему конкретный объект? Эта задача легко решается с помощью метода
У этого метода есть также синоним
А как он работает? Как интерпретатор определяет, принадлежит ли объект диапазону? Просто путем сравнения с границами (поэтому проверка принадлежности диапазону возможна лишь, если определен осмысленный оператор
6.2.5. Преобразование в массив
Когда диапазон преобразуется в массив, интерпретатор последовательно вызывает метод
Я снова не бог. Книга XXXVIII
38. Дорогой барон!
Фантастика:
аниме
попаданцы
рейтинг книги
Юлий Цезарь
Научно-образовательная:
история
рейтинг книги
Девяностые приближаются
3. Девяностые
Фантастика:
попаданцы
альтернативная история
рейтинг книги
Точка Бифуркации V
5. ТБ
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Куда уходит любовь
Любовные романы:
остросюжетные любовные романы
рейтинг книги
Магия отступника
3. Сын солдата
Фантастика:
фэнтези
рейтинг книги
1115 вопросов священнику
Религия и эзотерика:
православие
христианство
религия
прочая религиозная литература
рейтинг книги
Возвращение убийцы драконов
3. Убийца драконов
Фантастика:
фэнтези
рейтинг книги
Архипелаг ГУЛАГ. Книга 2
Проза:
русская классическая проза
рейтинг книги
Сабрина
Любовные романы:
современные любовные романы
рейтинг книги
Буревестник. Трилогия
Фантастика:
боевая фантастика
рейтинг книги
Ваш скандальный нрав
Любовные романы:
исторические любовные романы
рейтинг книги