Middle
Co je to operátor '===' v Ruby?
sobes.tech AI
Odpověď od AI
Operátor === (tři rovné) v Ruby se nazývá operátor rovnosti pro případ (case equality operator).
Používá se v výrazech case/when a je definován třídami pro kontrolu, zda pravý operand patří do "kategorie" nebo "rozsahu", který je reprezentován levým operandem.
Chování operátoru === závisí na třídě levého operandu.
Příklady:
- Třída
Module: Kontroluje, zda je pravý operand instancí nebo potomkem modulu/třídy.# Kontroluje, zda je pravý operand instancí nebo potomkem String. String === "hello" # => true - Třída
Range: Kontroluje, zda je pravý operand v rozsahu.# Kontroluje, zda je 5 v rozsahu 1..10. (1..10) === 5 # => true - Třída
Regexp: Kontroluje, zda řetězec odpovídá regulárnímu výrazu.# Kontroluje, zda řetězec "/ruby/" odpovídá regulárnímu výrazu /ruby/. /ruby/ === "/ruby/" # => true - Třída
Proc: Volá blok s pravým operandem jako argumentem.# Volá blok s argumentem 5. ->(x) { x > 3 } === 5 # => true - Třída
Symbol: Porovnává symbol s jiným řetězcem nebo symbolem.# Porovnává symbol :test s řetězcem "test". :test === "test" # => true
Ve většině ostatních tříd se === chová jako ==.
Použití v case/when:
Výraz case condition je ekvivalentní sérii volání === na každé hodnotě when s condition jako pravým operandem.
# Ekvivalentní s String === value
# Poté Integer === value
case value
when String
# ...
when Integer
# ...
end