0
votes

Valeurs de retour de l'opérateur ternaire

x> 5? list1.add (quelque chose): list2.add (quelque chose);

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.

Cela me forçait à prendre la valeur de retour comme ci-dessous

boolean y = x> 5? list1.add (quelque chose): list2.add (quelque chose);


2 commentaires

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 sont pour.


Parce que l'intention des personnes qui ont fait Java était pour que l'opérateur ternaire fonctionne de cette façon?


4 Réponses :


3
votes

Pour la même raison, vous ne pouvez pas faire 1 + 1; seul: car une expression en elle-même n'est pas une déclaration (comme le message d'erreur réel vous dit).


0 commentaires

0
votes

Parce que l'opérateur conditionnel (? :) retourne l'une des deux valeurs en fonction de la valeur d'une expression booléenne.

Il n'exécute pas parce que c'est une expression pas une déclaration.


0 commentaires

2
votes

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 si sont destinés.

Cependant dans ce cas, il semble que vous puissiez obtenir l'effet que vous souhaitez utiliser: xxx


0 commentaires

2
votes

Le conditionnel ?: 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 , ce qui signifie que vous ne pouvez pas simplement ajouter un ; à la fin de celui-ci pour faire une déclaration.

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 i ++ , ajouter un point-virgule i ++; , et vous avez une déclaration valable et significative.

expressions non inscriptionnées telles que l'ajout 1 + 2 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.

Si vous vous trouvez vouloir écrire une expression conditionnelle en tant que déclaration, utilisez simplement une instruction IF / SNÈS.


0 commentaires