Pourquoi dois-je prendre la valeur de retour des expressions d'opérateur ternaire? Je devrais avoir la possibilité d'ignorer la valeur de retour. P>
Cela me forçait à prendre la valeur de retour comme ci-dessous p>
x> 5? list1.add (quelque chose): list2.add (quelque chose); code> p>
boolean y = x> 5? list1.add (quelque chose): list2.add (quelque chose); code> p>
4 Réponses :
Pour la même raison, vous ne pouvez pas faire 1 + 1; code> seul: car une expression en elle-même n'est pas une déclaration (comme le message d'erreur réel vous dit). P>
Parce que l'opérateur conditionnel (? :) retourne l'une des deux valeurs en fonction de la valeur d'une expression booléenne. P>
Il n'exécute pas parce que c'est une expression pas une déclaration. P>
L'opérateur conditionnel fait partie d'une expression, ce qui signifie que son objectif est d'être évalué. Si vous n'essayez pas d'obtenir une valeur, vous ne devriez pas utiliser l'opérateur conditionnel. C'est ce que Cependant dans ce cas, il semble que vous puissiez obtenir l'effet que vous souhaitez utiliser: p> si code> sont destinés.
Le conditionnel Exemples d'expressions de l'instruction sont des invocations de méthodes, des invocations de constructeur, des préparations préalables. Ceux-ci ont logique de rester seul en tant que déclaration, car ils ont (ou peuvent avoir) des effets secondaires. Vous pouvez prendre l'expression expressions non inscriptionnées telles que l'ajout Si vous vous trouvez vouloir écrire une expression conditionnelle en tant que déclaration, utilisez simplement une instruction IF / SNÈS. P> ?: code> L'opérateur produit une expression (ce qui signifie qu'il s'agit d'un bit de l'arbre de syntaxe qui a une valeur lorsqu'il est exécuté). Cependant, ce n'est pas une expression de déclaration em>, ce qui signifie que vous ne pouvez pas simplement ajouter un
; code> à la fin de celui-ci pour faire une déclaration. P>
i ++ code>, ajouter un point-virgule
i ++; code>, et vous avez une déclaration valable et significative. P>
1 + 2 code> ne ressemble pas par eux-mêmes. C'est un peu comme dire "chat et chien": ce n'est pas une "phrase entière". Un opérateur conditionnel fait quelque chose comme "si la pluie puis le chien d'autre chien", qui n'a pas beaucoup de sens non plus. P>
Si vous n'essayez pas d'obtenir une valeur, vous ne devriez pas utiliser l'opérateur conditionnel. C'est ce que
si les déclarations code> sont pour.
Parce que l'intention des personnes qui ont fait Java était pour que l'opérateur ternaire fonctionne de cette façon?