Sobes.tech
Middle

Mis on '===' operaator Ruby's?

sobes.tech AI

Vastus AI-lt

Operaator === (kolmekordne võrdusmärk) Ruby keeles nimetatakse kuuluvuskontrolli operaatoriks (case equality operator).

See kasutatakse väljendites case/when ning määratletakse klassides, et kontrollida, kas parem operand kuulub "kategooriasse" või "diapasooni", mida esindab vasakpoolne operand.

Operaatori === käitumine sõltub vasakpoolse operandi klassist.

Näited:

  • Klass Module: Kontrollib, kas parem operand on mooduli või klassi eksemplar või selle järeltulija.
    # Kontrollib, kas parem operand on `String` või selle järeltulija.
    String === "hello"
    # => true
    
  • Klass Range: Kontrollib, kas parem operand asub vahemikus.
    # Kontrollib, kas 5 on vahemikus 1 kuni 10.
    (1..10) === 5
    # => true
    
  • Klass Regexp: Kontrollib, kas rida vastab regulaaravaldistele.
    # Kontrollib, kas rida "/ruby/" vastab regulaaravaldistele /ruby/.
    /ruby/ === "/ruby/"
    # => true
    
  • Klass Proc: Kutsub välja ploki koos parema operandiga argumentina.
    # Kutsub välja ploki argumendiga 5.
    ->(x) { x > 3 } === 5
    # => true
    
  • Klass Symbol: Võrdleb sümbolit teise stringi või sümboliga.
    # Võrdleb sümbolit :test stringiga "test".
    :test === "test"
    # => true
    

Enamikus teistes klassides käitub === nagu ==.

Kasutamine case/when:

Väljend case condition on võrdne mitme === väljakutsega, kus iga when väärtus on === väljakutse koos condition-iga paremal.

# Võrdne String === value
# Seejärel Integer === value
case value
when String
  # ...
when Integer
  # ...
end