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:
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.