Что такое оператор === в Ruby?

Case equality в Ruby: поведение классов, диапазонов, регулярных выражений и Proc, а также различие символа и строки.

Короткий ответ

Что ответить на собеседовании

=== — метод case equality, применяемый в ветках case/when. Его смысл задаёт левый операнд: класс проверяет принадлежность типу, диапазон — попадание в диапазон, Regexp — соответствие шаблону, Proc вызывает свой блок. Это не аналог строгого равенства JavaScript. Для символов :test === "test" возвращает false.

Подробный разбор

Ответ с пояснениями

В Ruby оператор === — вызов метода левого операнда. Его часто называют case equality, потому что обычный case value сопоставляет каждое условие when через условие === value.

String === "hello"         # true
(1..10) === 5              # true
/ruby/ === "I use ruby"    # true
(->(x) { x > 3 }) === 5    # true
:test === :test            # true
:test === "test"           # false

У класса или модуля проверяется, является ли объект экземпляром соответствующего класса либо принадлежит ли его цепочке предков. Например, Numeric === 5 истинно, хотя непосредственный класс числа — Integer. У диапазона проверяется попадание значения, у регулярного выражения — совпадение, а Proc#=== передаёт аргументы в proc. Результат proc не обязан быть логическим; case учитывает его истинность.

value = "ruby developer"
case value
when Integer
  puts "Число"
when /ruby/
  puts "Строка о Ruby"
else
  puts "Другой вариант"
end

Вторая ветка сработает раньше любых последующих проверок. Это не сравнение идентичности и не «равенство без преобразования типов» по правилам другого языка. У обычных объектов поведение часто совпадает с ==, но класс может переопределить метод под собственную семантику.

Важно не путать обычный case/when с pattern matching через case/in: последний включает дополнительные правила сопоставления и деконструкцию. И символ не становится строкой автоматически: :test и "test" остаются разными объектами разных типов. Условия Ruby, Symbol.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку