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