4D Sprache: Die von Ihnen gewünschten Verbesserungen sind hier

Träumen Sie davon, Kurzschlussauswertungen, ternäre Operatoren zu verwenden, aus einer Schleife auszubrechen oder eine Methode mit einem einfachen Schlüsselwort zu verlassen?

Nun, träumen Sie nicht länger! Wir haben Ihre Wünsche und Anregungen aus dem 4D Forum aufgegriffen und eine Reihe von Verbesserungen der 4D Sprache vorgestellt, die Ihnen helfen werden, Ihren Code zu vereinfachen.

return, continue, und break

Wir fügen 2 neue Anweisungen hinzu, die es Ihnen ermöglichen, aus einem Codeblock herauszuspringen:

  • Das return beendet die Ausführung der Methode oder Funktion, in der es erscheint, und gibt die Kontrolle an die aufrufende Methode zurück. Es kann auch einen optionalen Wert zurückgeben:
function factorial ( $n : Integer) : Integer
  
If ($n<1)
  return 1
Else 
  return $n*factorial($n-1)
End if 
  • Das Schlüsselwort break beendet die Schleife, die es enthält. Die folgende Anweisung wird unmittelbar nach dem Schleifenkörper ausgeführt:
For ($i; 1; 100)
   If ($myTab{$i}="")
      break
   End if 
End for
If ($i<101)
   // your code
End if
  • Die continue Anweisung bricht die Ausführung der Anweisungen in der aktuellen Iteration der aktuellen Schleife ab und setzt die Ausführung der Schleife mit der nächsten Iteration fort:
For ($i; 0; 10)
   If ($i=3)
      continue
   End if
   $text+=String($i)
End for
// $text="012456789" 

Kurzschlussauswertung

In einem Ausdruck, der einen AND- oder OR-Operator verwendet, bedeutet eine Kurzschlussauswertung, dass das zweite Argument nur dann ausgeführt oder ausgewertet wird, wenn das erste Argument nicht ausreicht, um den Wert des Ausdrucks zu bestimmen. Wir haben zwei neue Operatoren hinzugefügt, um dies zu ermöglichen:

  • && für den AND-Operator:
  • || für den OR-Operator

Mit dieser neuen Schreibweise für die AND- und OR-Operatoren können Sie diese Art von Test in einer Zeile schreiben:

if (($myColl.length>0) && ($myColl[$i]>10))
	// your code
End if 

Wenn $myColl leer ist, wird das zweite Argument nicht ausgeführt, so dass kein Fehler ausgelöst wird.

Sie alle wissen natürlich, dass dieser Schreibstil dazu dient, Ihren Code lesbarer zu machen. Aber es erlaubt Ihnen, noch weiter zu gehen.

Wenn Sie expr1 && expr2 oder expr1 || expr2 schreiben, wertet 4D beide Ausdrücke aus truthy oder falsy aus. Die unten aufgeführten Werte werden als falsy:

  • false
  • Null
  • undefiniert
  • Null Objekt
  • Null Sammlung
  • Null Zeiger
  • Null Bild
  • Null Datum
  • „“ – Leere Zeichenketten
  • [] – Leere Sammlungen
  • {} – Leere Objekte

Alle anderen Werte werden als truthy betrachtet.

Der Operator || gibt den ersten Ausdruck zurück, wenn der erste Ausdruck truthyist, andernfalls gibt er den zweiten Ausdruck zurück.

Der Operator && gibt den ersten Ausdruck zurück, wenn der erste Ausdruck falsyist, andernfalls gibt er den zweiten zurück.

Der nachstehende Code gibt zum Beispiel keinen booleschen, sondern einen numerischen Wert zurück:

$salary:= $employee.salary || $minSalary

$employee.salary wird zuerst ausgewertet. Wenn sein Ergebnis nicht Null ist, wird es als truthy und zurückgegeben.

Wenn $employee.salary ist Null, und somit falsyist, wird der zweite Ausdruck($minSalary) ausgewertet und sein Ergebnis zurückgegeben.

Zusammengesetzte Zuweisungsoperatoren

Zusammengesetzte Zuweisungsoperatoren sind eine vereinfachte Form der Schreiboperationen:

  • Der Additionszuweisungsoperator (+=) addiert den Wert des rechten Operanden zu einer Variablen und weist das Ergebnis der Variablen zu.
$a+=5  
 // equals to $a:=$a+5
  • Der Subtraktionszuweisungsoperator (-=) subtrahiert den Wert des rechten Operanden von einer Variablen und weist das Ergebnis der Variablen zu.
$s-=5 
// equals to $s:=$s-5
  • Der Divisionszuweisungsoperator (/=) dividiert eine Variable durch den Wert des rechten Operanden und weist das Ergebnis der Variablen zu.
$d/=2 
// equals to $d:=$d/2
  • Der Multiplikations-Zuweisungsoperator (*=) multipliziert eine Variable mit dem Wert des rechten Operanden und weist das Ergebnis der Variablen zu.
$m*=5 
// equals to $m:=$m*5

Ternärer Operator

Ein ternärer Operator besteht aus einer Bedingung, gefolgt von einem Fragezeichen ( ? ), einem Ausdruck, der ausgewertet werden soll, wenn die Bedingung truthy ist, gefolgt von einem Doppelpunkt ( : ). Schließlich der Ausdruck, der ausgewertet werden soll, wenn die Bedingung falsy ist: Bedingung ? Wert Wenn Wahr : Wert Wenn Falsch

Sie können zum Beispiel schreiben:

$label:=($size>1000) ? "big" : "small" 

Der ternäre Operator ist dem Befehl Choose sehr ähnlich, mit der Ausnahme, dass Choose nur einen booleschen Ausdruck als Bedingung akzeptiert, während der ternäre Operator alle Typen akzeptiert und auf ihre falsy und truthy Status.

Weitere Informationen finden Sie hier.

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.