Sobes.tech
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