Sobes.tech
Middle

Ce este operatorul '===' în Ruby?

sobes.tech AI

Răspuns de la AI

Operatorul === (trei egaluri) în Ruby este numit operatorul de egalitate pentru caz (case equality operator).

Este utilizat în expresiile case/when și este definit de către clase pentru a verifica dacă operandul drept aparține "categoriei" sau "intervalului" reprezentat de operandul stâng.

Comportamentul operatorului === depinde de clasa operandului stâng.

Exemple:

  • Clasa Module: Verifică dacă operandul drept este o instanță sau un subclasă a modulului/clasei.
    # Verifică dacă operandul drept este o instanță de String sau un subclasă al acesteia.
    String === "hello"
    # => true
    
  • Clasa Range: Verifică dacă operandul drept se află în interval.
    # Verifică dacă 5 se află în intervalul 1..10.
    (1..10) === 5
    # => true
    
  • Clasa Regexp: Verifică dacă șirul de caractere corespunde expresiei regulate.
    # Verifică dacă șirul "/ruby/" corespunde expresiei regulate /ruby/.
    /ruby/ === "/ruby/"
    # => true
    
  • Clasa Proc: Apelează un bloc cu operandul drept ca argument.
    # Apelează un bloc cu argumentul 5.
    ->(x) { x > 3 } === 5
    # => true
    
  • Clasa Symbol: Compară un simbol cu alt șir de caractere sau simbol.
    # Compară simbolul :test cu șirul "test".
    :test === "test"
    # => true
    

În majoritatea celorlalte clase, === se comportă ca ==.

Aplicare în case/when:

Expresia case condition este echivalentă cu o serie de apeluri === pe fiecare valoare when, cu condition ca operand drept.

# Echivalent cu String === value
# Apoi Integer === value
case value
when String
  # ...
when Integer
  # ...
end