Назад к вопросам
Middle
104
questionbank
Что такое оператор '===' в Ruby?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Оператор === (тройное равно) в Ruby называется оператором проверки принадлежности (case equality operator).
Он используется в выражениях case/when и определяется классами для проверки, принадлежит ли правый операнд "категории" или "диапазону", представленному левым операндом.
Поведение оператора === зависит от класса левого операнда.
Примеры:
- Класс
Module: Проверяет, является ли правый операнд экземпляром или потомком модуля/класса.# Проверяет, является ли правый операнд экземпляром String или его потомка. String === "hello" # => true - Класс
Range: Проверяет, находится ли правый операнд в диапазоне.# Проверяет, находится ли 5 в диапазоне 1..10. (1..10) === 5 # => true - Класс
Regexp: Проверяет, соответствует ли строка регулярному выражению.# Проверяет, соответствует ли строка "/ruby/" регулярному выражению /ruby/. /ruby/ === "/ruby/" # => true - Класс
Proc: Вызывает блок с правым операндом в качестве аргумента.# Вызывает блок с аргументом 5. ->(x) { x > 3 } === 5 # => true - Класс
Symbol: Сравнивает символ с другой строкой или символом.# Сравнивает символ :test со строкой "test". :test === "test" # => true
В большинстве других классов === ведет себя как ==.
Применение в case/when:
Выражение case condition эквивалентно серии вызовов === на каждом when значении с condition в качестве правого операнда.
# Эквивалентно String === value
# Затем Integer === value
case value
when String
# ...
when Integer
# ...
end