2009-10-11 10 views
2

J'ai une classe comme ça ..actionscript: variables publiques non définies?

public class Doc { 
    public function Doc():void {} 

    public var myVar:Boolean; 
} 

Comment puis-je savoir si la valeur est détenue par maVar par défaut faux, ou quelqu'un a attribué ce faux?!? N'y a-t-il pas un état indéfini? Comment puis-je réaliser une telle chose?

Répondre

5

Faites de myVar une propriété et utilisez une autre variable pour vérifier si elle a été définie explicitement.

public class Doc 
{ 
    public function Doc():void {} 

    private var _myVar:Boolean; 
    private var myVarSetExplicitly:Boolean = false; 
    public function get myVar():Boolean 
    { 
    return _myVar; 
    } 
    public function set myVar(value:Boolean):void 
    { 
    myVarSetExplicitly = true; 
    _myVar = value; 
    } 
} 
+0

Le cadre flexible lui-même utilise des exemples de ce même concept pour déterminer si une valeur a été modifiée. C'est la meilleure réponse. Vous devriez l'accepter comme la bonne réponse;) –

0

Vous ne pouvez pas avec un booléen, il est par défaut à false et faux === faux.

Vous souhaitez ne pouvait pas définir strictement le type de la variable, puis utiliser un getter et setter pour protéger le type

public class Doc { 
    private var _myVar; 

    public function set myVar(value:Boolean){ 
    _myVar = value; 
    } 

    public function get myVar(){ 
    return _myVar; 
    } 
} 

Maintenant, quand son jeu ne devrait maVar === nulle, et vous ne devriez être en mesure pour le définir à un booléen après cela.

Mais cela semble un peu hacky, et je me demande pourquoi vous avez besoin de faire la différence.

+0

J'ai besoin de cela parce que l'objet est créé, peuplé (si partiellement) et ensuite envoyé en XML. Mais si une var n'a pas été définie, je ne veux pas qu'elle soit envoyée du tout dans le XML. – luca

+0

non c'est un gâchis !! Pouvez-vous me suggérer quelque chose de différent pour atteindre mon objectif? le point est que certains champs peuvent être NULL dans la base de données et ils ne sont que si je ne les envoie pas .. (backend est rails) – luca

+0

Comment est-ce un gâchis? Les getters et les setters sont assez standard et vous permettraient de faire ce que vous voulez ... le Doc.myVar serait par défaut à null et ensuite ne peut être réglé sur un booléen, ce qui me semble exactement ce que vous demandez? – Simon

Questions connexes