Книга: Программирование на языке Ruby
6.2.4. Проверка принадлежности диапазону
6.2.4. Проверка принадлежности диапазону
Зачем нужен диапазон, если нельзя проверить, принадлежит ли ему конкретный объект? Эта задача легко решается с помощью метода include?
:
r1 = 23456..34567
x = 14142
y = 31416
r1.include?(x) # false
r1.include?(у) # true
У этого метода есть также синоним member?
.
А как он работает? Как интерпретатор определяет, принадлежит ли объект диапазону? Просто путем сравнения с границами (поэтому проверка принадлежности диапазону возможна лишь, если определен осмысленный оператор <=>
). Следовательно, запись (a..b).include?(x)
эквивалентна x >= a and x <= b
. Еще раз предупреждаем: будьте осторожны со строковыми диапазонами!
s1 = "2".."5"
str = "28"
s1.include?(str) # true (неправильно!)
Похожие страницы
- 5. Null-значения и проверка условий
- 12.1. Автоматизированная проверка безопасности
- 12.3. Проверка конфигурации
- Проверка, что сервер Firebird запущен
- Проверка на вирусы с помощью сканера Dr.Web
- Проверка правописания
- Проверка и ремонт
- Проверка диска на наличие ошибок
- 11.1. Проверка прав доступа
- 11.3. Проверка для действительного пользователя: access()
- 11.4. Проверка для эффективного пользователя: euidaccess() (GLIBC)
- Проверка эквивалентности