Sobes.tech
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