Sobes.tech
Middle

Was ist der Operator '===' in Ruby?

sobes.tech KI

Antwort von AI

Der Operator === (drei Gleichzeichen) in Ruby wird als case equality operator bezeichnet.

Er wird in case/when-Ausdrücken verwendet und von Klassen definiert, um zu überprüfen, ob der rechte Operand zur "Kategorie" oder zum "Bereich" gehört, die durch den linken Operand dargestellt werden.

Das Verhalten des Operators === hängt von der Klasse des linken Operanden ab.

Beispiele:

  • Klasse Module: Überprüft, ob der rechte Operand eine Instanz oder ein Unterklassen-Objekt des Moduls/der Klasse ist.
    # Überprüft, ob der rechte Operand eine Instanz von String oder dessen Unterklasse ist.
    String === "hello"
    # => true
    
  • Klasse Range: Überprüft, ob der rechte Operand im Bereich liegt.
    # Überprüft, ob 5 im Bereich 1..10 liegt.
    (1..10) === 5
    # => true
    
  • Klasse Regexp: Überprüft, ob die Zeichenkette mit dem regulären Ausdruck übereinstimmt.
    # Überprüft, ob die Zeichenkette "/ruby/" mit dem regulären Ausdruck /ruby/ übereinstimmt.
    /ruby/ === "/ruby/"
    # => true
    
  • Klasse Proc: Ruft einen Block mit dem rechten Operand als Argument auf.
    # Ruft einen Block mit dem Argument 5 auf.
    ->(x) { x > 3 } === 5
    # => true
    
  • Klasse Symbol: Vergleicht ein Symbol mit einer anderen Zeichenkette oder einem anderen Symbol.
    # Vergleicht das Symbol :test mit der Zeichenkette "test".
    :test === "test"
    # => true
    

In den meisten anderen Klassen verhält sich === wie ==.

Anwendung in case/when:

Der Ausdruck case condition ist äquivalent zu einer Reihe von Aufrufen von === auf jedem when-Wert mit condition als rechter Operand.

# Entspricht String === value
# Dann Integer === value
case value
when String
  # ...
when Integer
  # ...
end