Y at-il une manière élégante en Java au code:façon élégante de code si (10 <x <20)
if (10 < x < 20) {
...
}
-à-dire "si x est compris entre 10 et 20"
plutôt que d'avoir à écrire
if ((x > 10) && (x < 20)) {
...
}
Merci!
Y at-il une manière élégante en Java au code:façon élégante de code si (10 <x <20)
if (10 < x < 20) {
...
}
-à-dire "si x est compris entre 10 et 20"
plutôt que d'avoir à écrire
if ((x > 10) && (x < 20)) {
...
}
Merci!
Non. L'opérateur <
compare toujours deux éléments et génère une valeur booléenne. Vous ne pouvez donc pas les chaîner de manière "élégante". Vous pouvez le faire cependant:
if (10 < x && x < 20)
{
...
}
C'est beaucoup d'IMO élégant - il n'y a tout simplement pas de notation en sténographie/sucre. –
Kenny l'a cloué dans les commentaires.
if (10 < x && x < 20)
Vous souhaitez les conserver à la fois inférieures ou supérieures à; inverser la direction de la comparaison rend la logique confuse lorsque vous essayez de lire rapidement.
Vif observation au fond. Gardez une base de code cohérente. – jcolebrand
Non, mais vous pouvez réarranger pour faire mieux, ou écrire un wrapper si elle vous agace:
if (InRange(x, 10, 20)) { ... }
Ou, comme Carl dit:
if (new Range(10, 20).contains(x)) { ... }
Bien que personnellement, je ne vois pas le point. C'est une abstraction inutile. La déclaration booléenne nue est parfaitement évidente. Cependant, maintenant que j'y pense, et à la lumière du commentaire de Carl ci-dessous, il y a des moments où une Range est une abstraction parfaitement valide et utile (par exemple quand il s'agit de Feeds). Donc, en fonction de la sémantique de x
, peut-être que vous voulez une abstraction.
ou 'nouvelle plage (10, 20) .contains (x)'. –
@Carl Manaster: Oui, ce serait la façon de le faire. Bon appel. –
Oui, bien sûr, instancions un nouvel objet plutôt que de soumettre notre beau code à une expression '&&'. – mob
La seule chose que vous pouvez faire est lâche la parenthèse supplémentaire puisque le &&
a une priorité inférieure à >
et <
:
if (x > 10 && x < 20) {
...
}
Autre que cela: il n'y a aucun moyen plus court.
if(x < 20)
{
if(x > 10)
{
//...
}
}
OU
if(x > 10)
{
if(x < 20)
{
//...
}
}
+1 drôle, vous gagnez un internets, vous pouvez le ramasser sur votre chemin à la porte ... – jcolebrand
La voie rapide est un interrupteur.
EDIT:
switch(x) {
case 10:
case 11:
case 12:
case 13:
...
case 19: System.out.println("yes");
}
est compilé dans une table de saut, pas une longue série de ifs.
Je pense que vous avez besoin d'expliquer ce que vous vouliez dire un peu plus complet – Will
-1 La question était sur une * façon élégante * . – whiskeysierra
'if (10
kennytm
'if (Math.abs (x-15) <5) {' (Je veux dire, les débordements d'entiers ne comptent pas.) –