Existe-t-il une meilleure façon de nier un booléen en Java qu'un simple if-else ?
if (theBoolean) {
theBoolean = false;
} else {
theBoolean = true;
}
Existe-t-il une meilleure façon de nier un booléen en Java qu'un simple if-else ?
if (theBoolean) {
theBoolean = false;
} else {
theBoolean = true;
}
theBoolean ^= true;
Moins de frappes si votre variable comporte plus de quatre lettres.
Modifier : le code tend à renvoyer des résultats utiles lorsqu'il est utilisé comme termes de recherche sur Google. Ce n'est pas le cas du code ci-dessus. Pour ceux qui en ont besoin, c'est XOR par bit comme décrit ici .
Maintenant, je peux lâcher le nom (la syntaxe ?) de XOR avec désinvolture pour avoir l'air cool devant mes amis programmeurs. Votre réponse devrait être fusionnée avec la réponse choisie, ensemble elles sont la perfection pure.
@ScottStanchfield Ces personnes devraient l'apprendre. Ce n'est pas difficile du tout, ce n'est pas un hack, et ne pas le savoir mène souvent à un code merdique comme par exemple celui de cette question. C'est une vraie explosion - cinq lignes en utilisant les conventions standard !
La méthode "évidente (pour la plupart des gens)
theBoolean = !theBoolean;
Le chemin le plus court (la plupart du temps)
theBoolean ^= true;
Le moyen le plus visuel (très incertain)
theBoolean = theBoolean ? false : true;
theMethod( theBoolean ^= true );
Étant donné que l'opérateur d'assignation renvoie toujours ce qui a été assigné, cette opération bascule la valeur via l'opérateur bitwise, puis renvoie la nouvelle valeur assignée à utiliser dans l'appel de méthode.
Enveloppez la mise en œuvre dans une fonction/méthode appelée toggle et il n'y a pratiquement aucun moyen de la confondre.
@Reiner : Pour C
définitivement, mais en Java
il n'est pas permis de mélanger booléen et entier (également des choses comme while(1)
ne sont pas possibles en Java).
@Lambage : C'est vrai, mais l'inconvénient est que vous ne pouvez pas basculer un booléen en le passant simplement, car il n'est pas possible de passer des primitives par référence en Java. Vous devriez réaffecter le résultat de la méthode à votre variable, ou créer une classe d'enveloppe pour le booléen.
Cette réponse est apparue lors de la recherche de "java invert boolean function". L'exemple ci-dessous empêchera certains outils d'analyse statique d'échouer les constructions en raison de la logique de branchement. C'est utile si vous avez besoin d'inverser un booléen et que vous n'avez pas construit de tests unitaires complets ;)
Boolean.valueOf(aBool).equals(false)
ou alternativement :
Boolean.FALSE.equals(aBool)
ou
Boolean.FALSE::equals
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Oh bien, j'étais sur le point de poser la même question, bien que ma question aurait été spécifique à javascript/as3, ou ECMAScript en général je suppose... qui sera facilement couvert par cette question.
0 votes
Et s'il n'y a pas d'opérateur !