59 votes

Puis-je « inverser » un bool ?

J'ai quelques vérifications pour voir si un écran est actif. Le code ressemble à ceci :

 if (GUI.Button(new Rect(Screen.width / 2 - 10, 50, 50, 30), "Rules")) //Creates a button
    {
        if (ruleScreenActive == true) //check if the screen is already active
            ruleScreenActive = false; //handle according to that
        else 
            ruleScreenActive = true;
    }

Existe-t-il un moyen - chaque fois que je clique sur le bouton - d'inverser la valeur de ruleScreenActive ?

(C'est C# dans Unity3D)

141voto

Ahmad Mageed Points 44495

Vous pouvez vous débarrasser de vos instructions if/else en annulant la valeur bool :

 ruleScreenActive = !ruleScreenActive;

53voto

Jack Points 845

Je pense qu'il vaut mieux écrire :

 ruleScreenActive ^= true;

vous évitez ainsi d'écrire deux fois le nom de la variable... ce qui peut conduire à des erreurs

11voto

MusiGenesis Points 49273
ruleScreenActive = !ruleScreenActive;

8voto

Jack Points 845

Cela serait intégré, donc la lisibilité augmente, les coûts d'exécution restent les mêmes :

 public static bool Invert(this bool val) { return !val; }

Donner:

 ruleScreenActive.Invert();

Prograide.com

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.

Powered by:

X