Недавно я начал изучать Ruby, и я читаю следующее Ruby Manual.
В этом руководстве говорится следующее (о диапазонах):
Конечное использование универсального диапазона - это интервальный тест: видение, если некоторое значение попадает в интервал, представленный диапазоном. Это с использованием ===, оператора равенства случая.
В этих примерах:
- (1..10) === 5 "true
- (1..10) === 15 "false
- (1..10) === 3.14159 "true
- ('a'.. 'j') === 'c' "true
- ('a'.. 'j') === 'z' "false
После ознакомления с оператором Ruby "===" здесь, я обнаружил, что это работает на диапазонах, потому что Ruby переводит это в case case.
Таким образом, вы можете захотеть поместить диапазон в свой оператор case, и выбрать его. Кроме того, обратите внимание, что аргументы case переводятся на b === a в выражениях, подобных случаю a, когда b - истинный конец.
Однако у меня возникает следующий вопрос: почему следующая команда возвращает true?
(1..10) === 3.14159 "true
Так как (1..10) означает [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], я ожидал, что результат будет ложным.