2013-11-14 6 views
2

Почему вернуть это уравнение ложноеСравнение диапазонов в Рубине

(0..9) === (0..9) 
=> false 

В то время как это уравнение возвращает истину ...

5 === 5 
=> true 

И это уравнение также верно?

(0..9) == (0..9) 
=> true 

Что мне не хватает в диапазонах?

ответ

2

Range#=== документация говорит:

Возвращает истину, если OBJ является элементом диапазона, ложь в противном случае. Удобно, === это оператор сравнения, используемый операторами case.

Диапазон (0..9) не является элементом диапазона (0..9), поэтому (0..9) === (0..9) является ложным.

Range#== документация говорит:

Возвращает TRUE, только если OBJ является диапазоном, имеет эквивалент начало и конец пунктов (сравнивая их с ==), и имеют тот же exclude_end? установка как диапазон.

Начальные и конечные элементы диапазонов (0..9) и (0..9) являются одинаковыми, поэтому (0..9) == (0..9) является истинным.

+0

Пример использования в случае case: 'case n; когда (0..32); <сделать что-нибудь>; когда (33..64); <сделать что-то еще>: end'. –

Смежные вопросы