Jusqu'ici, j'ai cherché sur le net, la déclaration a toujours si et d'autre condition telle que a ? b : c
. Je voudrais savoir si la déclaration ternaire if
peut être utilisée sans else
. En supposant que j'ai le code suivant, je souhaite fermer le PreparedStatement
s'il n'est pas null
(J'utilise le langage de programmation Java.)
PreparedStatement pstmt;
//....
(pstmt!=null) ? pstmt.close : <do nothing>;
Non ... tu ne peux pas faire ça. Essayez plutôt ceci:
if(bool1 && bool2) voidFunc1();
Juste l'écrire?
if(pstmt != null) pstmt.close();
C'est exactement la même longueur.
Pourquoi utiliser l'opérateur ternaire alors que vous n'avez qu'un seul choix?
if (pstmt != null) pstmt.close();
est assez!
Comme mentionné dans les autres réponses, vous ne pouvez pas utiliser un opérateur ternaire pour le faire.
Toutefois, si le besoin s’en fait sentir, vous pouvez utiliser Java 8 Optional et lambdas pour mettre ce type de logique dans une seule instruction:
Optional.of(pstmt).ifPresent((p) -> p.close())
L'opérateur ternaire if
est l'opérateur particulier ternaire. Unique en son genre.
De Wiki:
En mathématiques, une opération ternaire est une opération n-aire avec n = 3.
Cela signifie que les 3 opérandes sont nécessaires pour vous.
Une opération ternaire est appelée ternaire car elle prend 3 arguments, si elle en prend 2 c'est une opération binaire.
Et comme indiqué ci-dessus, il s’agit d’une expression expression renvoyant une valeur.
Si vous omettez le contraire, vous obtiendrez une situation non définie dans laquelle l'expression ne renverra pas de valeur.
Donc, comme indiqué dans une autre réponse, vous devriez utiliser un if statement.
Vous ne pouvez pas utiliser ternary sans autre option, mais pour faire un "if-without-else" sur une ligne, vous pouvez utiliser Java 8 Optional
class.
PreparedStatement pstmt;
//....
Optional.ofNullable(pstmt).ifPresent(pstmt::close); // <- but IOException will still happen here. Handle it.