Sobes.tech
Middle

Šta je operator '===' u Ruby-ju?

sobes.tech АИ

Одговор од АИ

Operator === (trostruko jednako) u Rubyju naziva se operator za jednakost slučaja (case equality operator).

Koristi se u izrazima case/when i definiran je od strane klasa za provjeru pripadnosti desnog operanda "kategoriji" ili "rasponu" kojeg predstavlja lijevi operand.

Ponašanje operatora === ovisi o klasi lijevog operanda.

Primjeri:

  • Klasa Module: Provjerava je li desni operand instanca ili podklasa modula/klase.
    # Provjerava je li desni operand instanca ili podklasa Stringa.
    String === "hello"
    # => true
    
  • Klasa Range: Provjerava je li desni operand unutar raspona.
    # Provjerava je li 5 unutar raspona 1..10.
    (1..10) === 5
    # => true
    
  • Klasa Regexp: Provjerava odgovara li niz regularnom izrazu.
    # Provjerava odgovara li niz "/ruby/" regularnom izrazu /ruby/.
    /ruby/ === "/ruby/"
    # => true
    
  • Klasa Proc: Poziva blok s desnim operandom kao argumentom.
    # Poziva blok s argumentom 5.
    ->(x) { x > 3 } === 5
    # => true
    
  • Klasa Symbol: Uspoređuje simbol s drugim nizom ili simbolom.
    # Uspoređuje simbol :test s nizom "test".
    :test === "test"
    # => true
    

U većini drugih klasa, === se ponaša kao ==.

Primjena u case/when:

Izraz case condition ekvivalentan je nizu poziva === na svakoj vrijednosti when s condition kao desnim operandom.

# Ekvivalentno s String === value
# Zatim Integer === value
case value
when String
  # ...
when Integer
  # ...
end