Vergleich mit einem undefinierten Wert

Seit dem Erscheinen von ORDA, Klassen und anderen Objekten müssen Sie zunehmend mit undefinierten Werten arbeiten.

Da einige von Ihnen nach einem einfacheren Weg fragen, sie zu verwenden, können Sie ab v20 jeden Wert mit einem undefinierten Wert vergleichen, ohne einen Fehler zu erhalten.

Normalerweise überprüfen die Vergleichsoperatoren =, #, >, <, >= und <= in 4D den Typ und den Wert jedes Operanden. Wenn die Typen der beiden Operanden unterschiedlich sind, führt der Vergleich zu einem Fehler:

Wie bereits erwähnt, sind wir uns bewusst, dass Sie bei der Arbeit mit Klassen und Objekten mit undefinierten Werten arbeiten müssen, daher haben wir diese Regel flexibler gestaltet. Ab v20 können Sie undefinierte Werte mit allen Variablentypen vergleichen:

  • Der = Vergleich gibt true zurück, wenn Sie eine undefinierte Variable mit einem null- oder undefinierten Wert vergleichen, und false in allen anderen Fällen:
$o:=new object
If ($o.undefined =10)
  ...
else
  // returns false because $o.undefined is undefined
  ...
End if
  • Der Vergleich # gibt false zurück, wenn Sie eine undefinierte Variable mit einem Nullwert oder einem undefinierten Wert vergleichen, und true bei allen anderen Vergleichen:
$o:=new object
If ($o.undefined #10)
  // returns true because $o.undefined is undefined
  ...
else
  ...
End if
  • Die Vergleiche >, <, >= und <= geben bei allen Vergleichen zwischen einer undefinierten Variablen und einem Einzelwert (numerisch, Text, Datum, Zeit, boolean) false zurück. Da der Vergleich keine Bedeutung hat, gibt 4D bei den anderen Typen einen Fehler aus.
$o:=new object
If ($o.undefined >10)
  ...
else
  // returns false because $o.undefined is undefined
  ...
End if

In der Dokumentation finden Sie weitere Details!

Fabrice Mainguené
- Product Owner -Fabrice Mainguené gehört seit November 2016 zum 4D Program Team. Als Product Owner ist er verantwortlich für das Schreiben der User Stories und deren Umsetzung in funktionale Spezifikationen. Seine Aufgabe ist es auch, sicherzustellen, dass die gelieferte Funktionsimplementierung den Kundenanforderungen entspricht.Nach seinem Bachelor-Abschluss in Informatik am CNAM arbeitete Fabrice als Windev-Entwickler bei einem kleinen Software-Verlag. Danach arbeitete er für verschiedene Unternehmen in Industrie und Handel als Windev- und Webentwickler sowie als technischer Berater für neue Funktionen.