Sobes.tech
Middle

Čo je operátor '===' v Ruby?

sobes.tech AI

Odpoveď od AI

Operátor === (tri enakosti) v Rubyju se imenuje operator za enakost primera (case equality operator).

Uporablja se v izrazih case/when in je definiran s strani razredov za preverjanje, ali desni operand pripada "kategoriji" ali "obsegu", ki ga predstavlja levi operand.

Obnašanje operatorja === je odvisno od razreda levega operanda.

Primeri:

  • Razred Module: Preverja, ali je desni operand instanca ali podrazred modula/razreda.
    # Preverja, ali je desni operand instanca ali podrazred Stringa.
    String === "hello"
    # => true
    
  • Razred Range: Preverja, ali je desni operand v obsegu.
    # Preverja, ali je 5 v obsegu 1..10.
    (1..10) === 5
    # => true
    
  • Razred Regexp: Preverja, ali niz ustreza regularnemu izrazu.
    # Preverja, ali niz "/ruby/" ustreza /ruby/.
    /ruby/ === "/ruby/"
    # => true
    
  • Razred Proc: Pokliče blok s desnim operandom kot argument.
    # Pokliče blok z argumentom 5.
    ->(x) { x > 3 } === 5
    # => true
    
  • Razred Symbol: Primerja simbol z drugim nizom ali simbolom.
    # Primerja simbol :test z nizom "test".
    :test === "test"
    # => true
    

V večini drugih razredov se === obnaša kot ==.

Uporaba v case/when:

Izraz case condition je enakovreden seriji klicev === na vsaki vrednosti when z condition kot desnim operandom.

# Enakovredno z String === value
# Nato Integer === value
case value
when String
  # ...
when Integer
  # ...
end