Ce code est écrit en langage ActionScript simple, mais je suppose que ce problème se produira dans toutes les langues qui ont des types de données booléens.Toggling Boolean Problème
Je clique simplement sur la scène pour que ma variable booléenne inverse sa valeur et que trace/imprime/enregistre sa nouvelle valeur. Cependant, il trace toujours vrai au lieu de basculer entre vrai et faux pour chaque clic de souris.
ce que je fais mal?
var myBool:Boolean;
stage.addEventListener(MouseEvent.CLICK, mouseClickHandler);
function mouseClickHandler(evt:MouseEvent):void
{
changeBoolean(myBool);
}
function changeBoolean(boolean:Boolean):void
{
boolean = !boolean;
trace(boolean);
}
ah ... est logique. Puisque j'utilise de nombreuses variables booléennes, je vais simplement inverser le booléen pendant que je passe sa valeur: changeBoolean (myBool =! myBool); – TheDarkIn1978
J'ai trouvé cela déroutant parce que si je passais d'autres objets, comme des objets d'affichage, à une fonction alors je peux les changer. cela signifie-t-il que les types de données primitifs ne sont transmis qu'aux fonctions que comme leur valeur, tandis que les autres types de données non primitifs sont transmis comme eux-mêmes? est-ce la règle générale? – TheDarkIn1978
Oui, les types de valeur sont transmis par valeur, tandis que les types de référence sont transmis comme références (et tout ce que vous faites avec eux dans la fonction les affecte également en dehors de la fonction). Les types de référence sont généralement des classes, tandis que les types de valeurs sont généralement des types de systèmes (booléen, entier, char, etc.), des énumérations et des structures. –