référence lorsque Ambigu getter / setter ont différentes visibilités
-
22-09-2019 - |
Question
Le code suivant soulève une référence ambiguë pour value
au moment de la compilation:
import flash.display.Sprite;
public class Main extends Sprite
{
private var _value : Number = 0.;
public function get value() : Number { return _value; }
private function set value(v : Number) : void { _value = v; }
public function Main() : void
{
value = 42.;
}
}
Je soupçonne une sorte de bug dans le compilateur, bien que je ne l'ai pas lu en fait la norme ECMA.
Avant que quelqu'un pose ces questions:
- setters privés ne font sens.
- L'ambiguïté existe aussi avec des espaces de noms personnalisés (ce qui est le problème que je suis face).
La solution
il est en effet un bogue dans le compilateur, et il est listé dans les bugs . sa a déclaré que son un oversite des développeurs et ne sera pas en fixe dans un proche avenir.
si vous êtes besoin d'exécuter spécifiquement une fonction pour définir le secteur privé (plutôt que de simplement attribuer la valeur, dans ce cas, vous pouvez laisser la fonction setter complètement et exécuter itll), alors vous devrez exécuter une séparée fonction Sandro dit .
Autres conseils
Je pense que cela peut être une limitation de AS3. Vous pouvez créer une fonction privée appelée setValue () ou si votre jeu d'avoir un setter vous pourriez être en mesure de sortir avec cela, même si ce n'est pas très joli.
package {
import flash.display.Sprite;
public class Main extends Sprite {
private var __value :Number = 0;
public function Main(): void {
_value = 42;
}
public function get value():Number {
return __value;
}
private function set _value(v:Number):void {
__value = v;
}
}
}