Sobes.tech
Middle

Cos'è l'operatore '===' in Ruby?

sobes.tech AI

Risposta dell'AI

L'operatore === (tre uguali) in Ruby è chiamato operatore di uguaglianza di caso (case equality operator).

Viene usato nelle espressioni case/when ed è definito dalle classi per verificare se l'operando destro appartiene alla "categoria" o all"intervallo" rappresentato dall'operando sinistro.

Il comportamento dell'operatore === dipende dalla classe dell'operando sinistro.

Esempi:

  • Classe Module: Verifica se l'operando destro è un'istanza o un sottoclasse del modulo/classe.
    # Verifica se l'operando destro è un'istanza di String o di una sua sottoclasse.
    String === "hello"
    # => true
    
  • Classe Range: Verifica se l'operando destro è all'interno dell'intervallo.
    # Verifica se 5 è nell'intervallo 1..10.
    (1..10) === 5
    # => true
    
  • Classe Regexp: Verifica se la stringa corrisponde all'espressione regolare.
    # Verifica se la stringa "/ruby/" corrisponde all'espressione regolare /ruby/.
    /ruby/ === "/ruby/"
    # => true
    
  • Classe Proc: Chiama un blocco con l'operando destro come argomento.
    # Chiama un blocco con l'argomento 5.
    ->(x) { x > 3 } === 5
    # => true
    
  • Classe Symbol: Confronta un simbolo con un'altra stringa o simbolo.
    # Confronta il simbolo :test con la stringa "test".
    :test === "test"
    # => true
    

Nella maggior parte delle altre classi, === si comporta come ==.

Applicazione in case/when:

L'espressione case condition è equivalente a una serie di chiamate a === su ogni valore when con condition come operando destro.

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