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).
Était-ce utile?

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;
        }
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top