Der FoxPro-Kompatible Skriptinterpreter
🔎
Newsletter
Der FoxPro-Kompatible Skriptinterpreter

AND

AND(Left AS Logical?, Right AS Logical?) AS Logical?


Logische UND-Verknüpfung zweier Operanden. Die Aussage ist wahr wenn beide Operanden wahr sind. Die Aussage ist Null, wenn einer der Operanden Null ist.

Compileroptimierung

Bei der Funktion handelt es sich um eine intrinsische Funktion die vom Compiler optimiert wird. Zur Laufzeit wird der linke Operand zuerst evaluiert. Wenn der linke Operand unwahr oder Null ist wird angenommen, dass die Aussage nich mehr wahr werden kann. Der rechte Operand wir dann nicht mehr evaluiert.

Das folgende Beispiel veranschaulicht die Optimierung.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
? grab_left() AND grab_right()

FUNCTION grab_left
  ? "Runtime grabbed left operand."
  RETURN .NULL. && Oder .F.
                && Beachte Kommentar unterschied zu FoxPro
ENDFUNC

FUNCTION grab_right
  ? "Runtime grabbed right operand."
  RETURN .T.
ENDFUNC

Runtime grabbed left operand.
.NULL.

Kompatiblität mit FoxPro

Es gibt hier einen kleinen Unterschied zu FoxPro. FoxPro evaluiert den rechten Operanden auch dann, wenn der linke Operand Null ist. Wenn der linke Operand allerdings .F. ist evaluiert FoxPro den rechten Operanden auch nicht mehr.