Middle
Какво е операторът '===' в Ruby?
sobes.tech AI
Отговор от 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