Middle
Czym jest operator '===' w Ruby?
sobes.tech AI
Odpowiedź od AI
Operator === (trzy równe) w Ruby nazywa się operatorem sprawdzania przynależności (case equality operator).
Używa się go w wyrażeniach case/when i jest definiowany przez klasy do sprawdzania, czy prawy operand należy do "kategorii" lub "zakresu" reprezentowanego przez lewy operand.
Zachowanie operatora === zależy od klasy lewego operandu.
Przykłady:
- Klasa
Module: Sprawdza, czy prawy operand jest instancją lub potomkiem modułu/klasy.# Sprawdza, czy prawy operand jest instancją String lub jego potomkiem. String === "hello" # => true - Klasa
Range: Sprawdza, czy prawy operand mieści się w zakresie.# Sprawdza, czy 5 mieści się w zakresie 1..10. (1..10) === 5 # => true - Klasa
Regexp: Sprawdza, czy łańcuch pasuje do wyrażenia regularnego.# Sprawdza, czy łańcuch "/ruby/" pasuje do wyrażenia /ruby/. /ruby/ === "/ruby/" # => true - Klasa
Proc: Wywołuje blok z prawym operatorem jako argumentem.# Wywołuje blok z argumentem 5. ->(x) { x > 3 } === 5 # => true - Klasa
Symbol: Porównuje symbol z innym łańcuchem lub symbolem.# Porównuje symbol :test z łańcuchem "test". :test === "test" # => true
W większości innych klas === zachowuje się jak ==.
Zastosowanie w case/when:
Wyrażenie case condition jest równoważne serii wywołań === na każdej wartości when z condition jako prawym operatorem.
# Równoważne z String === value
# Następnie Integer === value
case value
when String
# ...
when Integer
# ...
end