Soweit ich das Netz durchsucht habe, hat die Anweisung immer eine if- und else-Bedingung wie a ? b : c
. Ich würde gerne wissen, ob die if
-Anweisung ohne else
verwendet werden kann. Angenommen, ich habe den folgenden Code, möchte ich die PreparedStatement
schließen, wenn sie nicht null ist
(Ich verwende Java-Programmiersprache.)
PreparedStatement pstmt;
//....
(pstmt!=null) ? pstmt.close : <do nothing>;
Nein, das kannst du nicht tun. Versuchen Sie es stattdessen:
if(bool1 && bool2) voidFunc1();
Schreib es einfach aus
if(pstmt != null) pstmt.close();
Es ist genau die gleiche Länge.
Warum einen ternären Operator verwenden, wenn Sie nur eine Wahl haben
if (pstmt != null) pstmt.close();
ist genug!
Wie in den anderen Antworten erwähnt, können Sie dazu keinen ternären Operator verwenden.
Wenn Sie jedoch auf die Notwendigkeit stoßen, können Sie Java 8 Optional und Lambdas verwenden, um diese Art von Logik in eine einzige Anweisung zu bringen:
Optional.of(pstmt).ifPresent((p) -> p.close())
Der ternäre if
-Operator ist der bestimmte ternäre Operator. Einzigartig.
Aus Wiki:
In der Mathematik ist eine ternäre Operation eine n-ary-Operation mit n = 3.
Das bedeutet, dass alle 3 Operanden für Sie benötigt werden.
Eine ternäre Operation wird als ternäre Operation bezeichnet, da 3 Argumente erforderlich sind. Wenn 2 erforderlich ist, handelt es sich um eine binäre Operation.
Und wie oben erwähnt, ist es ein Ausdruck , der einen Wert zurückgibt.
Wenn Sie nichts anderes angeben, haben Sie eine undefinierte Situation, in der der Ausdruck keinen Wert zurückgeben würde.
Wie auch in anderen Antworten erwähnt, sollten Sie eine if Anweisung verwenden.
Sie können ternary nicht ohne etwas anderes verwenden, aber wenn Sie in einer Zeile ein "if-without-else" ausführen möchten, können Sie die Java-Klasse Optional
verwenden.
PreparedStatement pstmt;
//....
Optional.ofNullable(pstmt).ifPresent(pstmt::close); // <- but IOException will still happen here. Handle it.