2012-02-07 8 views
1

J'ai appris à propos de l'encapsulation dans AS3 et à utiliser les fonctions get/set pour créer des variables qui sont (ou semblent être) uniquement en lecture. Je peux le faire fonctionner avec des variables d'instance, mais pas avec des variables statiques. J'ai trouvé this, ce qui semble indiquer qu'il est possible d'utiliser les fonctions get/set sur les propriétés statiques, mais le compilateur me répète que j'ai des déclarations de fonction en double. C'est essentiellement ce que j'utilise:Fonctions Get/Set sur les propriétés statiques

package { 
    public class Foo { 
     protected static var bar:int = 0; 

     public static function get bar():int {return bar;} 
    } 
} 
+3

vous ne pouvez pas utiliser un '' variable' et function' avec un nom 'bar' – mgraph

Répondre

5

Vous ne pouvez pas créer une fonction (y compris obtient ou définit) avec le même nom comme une variable, sinon vous seriez re-lancer la variable.

package { 
    public class Foo { 
     protected static var myVar:int = 0; 

     public static function get theVar():int {return myVar;} 
    } 
} 
+0

code est correct, mais a besoin d'une explication pour le changement. –

4

Une bonne pratique, vous pouvez adopter est d'appeler _bar la variable « interne » que vous allez modifier par getter et setter, et les appeler simplement bar.

Par exemple:

package { 
    public class Foo { 
     protected static var _bar:int = 0; 

     public static function get bar():int { 
       return _bar; 
     } 
    } 
} 
+0

+1 pour la convention de codage de soulignement, cependant j'utilise principalement le trait de soulignement pour les propriétés privées seulement. – Taurayi

+0

utilise principalement le soulignement * – Taurayi

Questions connexes