6.2.4. Проверка принадлежности диапазону

We use cookies. Read the Privacy and Cookie Policy

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 (неправильно!)

Данный текст является ознакомительным фрагментом.