Sobes.tech
Middle

O que é o operador '===' em Ruby?

sobes.tech IA

Resposta da IA

O operador === (três iguais) em Ruby é chamado operador de verificação de pertença (case equality operator).

É usado em expressões case/when e é definido pelas classes para verificar se o operando direito pertence à "categoria" ou ao "intervalo" representado pelo operando esquerdo.

O comportamento do operador === depende da classe do operando esquerdo.

Exemplos:

  • Classe Module: Verifica se o operando direito é uma instância ou descendente do módulo/classe.
    # Verifica se o operando direito é uma instância de String ou seu descendente.
    String === "hello"
    # => true
    
  • Classe Range: Verifica se o operando direito está dentro do intervalo.
    # Verifica se 5 está no intervalo 1..10.
    (1..10) === 5
    # => true
    
  • Classe Regexp: Verifica se a string corresponde à expressão regular.
    # Verifica se a string "/ruby/" corresponde à expressão regular /ruby/.
    /ruby/ === "/ruby/"
    # => true
    
  • Classe Proc: Chama um bloco com o operando direito como argumento.
    # Chama um bloco com o argumento 5.
    ->(x) { x > 3 } === 5
    # => true
    
  • Classe Symbol: Compara um símbolo com outra string ou símbolo.
    # Compara o símbolo :test com a string "test".
    :test === "test"
    # => true
    

Na maioria das outras classes, === comporta-se como ==.

Aplicação em case/when:

A expressão case condition é equivalente a uma série de chamadas a === em cada valor when com condition como operando direito.

# Equivale a String === value
# Depois Integer === value
case value
when String
  # ...
when Integer
  # ...
end