Sobes.tech
Middle

¿Qué es el operador '===' en Ruby?

sobes.tech AI

Respuesta de la IA

El operador === (tres iguales) en Ruby se llama operador de comprobación de pertenencia (case equality operator).

Se usa en expresiones case/when y es definido por las clases para verificar si el operando derecho "pertenece" a la "categoría" o "rango" representado por el operando izquierdo.

El comportamiento del operador === depende de la clase del operando izquierdo.

Ejemplos:

  • Clase Module: Verifica si el operando derecho es una instancia o descendiente del módulo/clase.
    # Verifica si el operando derecho es una instancia de String o su descendiente.
    String === "hello"
    # => true
    
  • Clase Range: Verifica si el operando derecho está dentro del rango.
    # Verifica si 5 está en el rango 1..10.
    (1..10) === 5
    # => true
    
  • Clase Regexp: Verifica si la cadena coincide con la expresión regular.
    # Verifica si la cadena "/ruby/" coincide con la expresión regular /ruby/.
    /ruby/ === "/ruby/"
    # => true
    
  • Clase Proc: Llama a un bloque con el operando derecho como argumento.
    # Llama a un bloque con el argumento 5.
    ->(x) { x > 3 } === 5
    # => true
    
  • Clase Symbol: Compara un símbolo con otra cadena o símbolo.
    # Compara el símbolo :test con la cadena "test".
    :test === "test"
    # => true
    

En la mayoría de otras clases, === se comporta como ==.

Aplicación en case/when:

La expresión case condition es equivalente a una serie de llamadas a === en cada valor when con condition como operando derecho.

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