9.4 Logische Operatoren

Hollywood unterstützt folgende logische Operatoren:

Die binären logischen Operatoren erlauben Ihnen, Entscheidungen zu treffen, die auf mehreren Bedingungen basieren. Jeder binäre logische Operator benötigt zwei Operanden, die verwendet werden, um das Ergebnis der logischen Bedingung auszuwerten. Alle Werte, die nicht 0, Nil oder eine leere Zeichenkette ("") sind, werden als True betrachtet.

Der Operator Or wird benutzt, um festzustellen, ob mindestens eine von zwei Bedingungen wahr ist. Der Operator And überprüft, ob beide Bedingungen wahr sind und der Operator Not ist mit einem logischen Minus-Vorzeichen vergleichbar. Er wandelt True in False und False in True um.

Die Operatoren And und Or verwenden Short-Cut-Auswertung. Das bedeutet, dass wenn der erste Operand bereits das Ergebnis definiert, wird der zweite Operand überhaupt nicht ausgewertet. Zum Beispiel wenn der erste Operand von einem And-Ausdruck False (Null) ist, dann wird der zweite Operand nicht gebraucht, weil der ganze Ausdruck sowieso nicht mehr True sein kann. Das gleiche gilt für einen Or-Ausdruck, wenn der erste Operand True (ungleich Null) ist. Dann wird der gesamte Ausdruck immer True sein - egal, welchen Wert der zweite Operand hat.

Bitte beachten Sie: And sowie Or geben die Konstante, nicht aber True (1) zurück, wenn sie wahr sind. And gibt den zweiten Operanden, wenn der Ausdruck wahr ist, Or gibt den ersten Operanden zurück, wenn es wahr ist. Beispielsweise:

 
a = 5 And 4     ; a = 4
a = 5 And 0     ; a = 0
a = 0 And 4     ; a = 0
b = 5 Or 4      ; b = 5
b = 5 Or 0      ; b = 5
b = 0 Or 4      ; b = 4

Der unäre Not Operator wird seine Operanden negieren. Das Ergebnis wird immer True (1) oder False (0) sein. Wenn NOT mit einer Zeichenkette verwendet wird, gibt der Ausdruck bei einer leeren Zeichenfolge ("") True zurück. Beispielsweise:

 
a = Not True     ; a = 0 (False)
a = Not False    ; a = 1 (True)
a = Not 5        ; a = 0 (False)
a = Not Not True ; a = 1 (True)
a = Not "Hello"  ; a = 0 (False)
a = Not ""       ; a = 1 (True)

Bitte beachten Sie: Der Not Operator hat eine hohe Priorität. Sie werden in den meisten Fällen Klammern benötigen. Zum Beispiel funktioniert das nicht:

 
If Not a = -1        ; falsch!

Hollywood wird es zu

 
If (Not a) = -1

übersetzen, weil der Not-Operator eine höhere Priorität als das Gleichheitszeichen hat! Aber offensichtlich macht diese Übersetzung keinen Sinn, weil das Ergebnis des Ausdrucks in Klammern (Not a) immer 0 oder 1 sein wird, aber nie -1. Deshalb müssen Sie Klammern um den Ausdruck mit der niedrigeren Priorität verwenden:

 
If Not (a = -1)      ; korrekt!

Siehe Prioritäten der Operatoren für Details.


Navigation zeigen