Pregunta

El siguiente código genera un ambigua referencia para value en tiempo de compilación:

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.;
    }
}

sospecho algún tipo de error en el compilador, aunque en realidad no leo el estándar ECMA.

Antes de que alguien le pregunta a estas preguntas:

  • set privadas tiene sentido hacerlo.
  • La ambigüedad también existe con espacios de nombres personalizados (que es el problema que estoy enfrentando).
¿Fue útil?

Solución

es de hecho un error en el compilador, y es enumerados en los insectos . su declaró que su sobresitio una de los desarrolladores y no será fijado en el corto plazo.

Si estás que necesitan para funcionar específicamente una función para establecer de forma privada (en lugar de asignar el valor, en cuyo caso se puede dejar de lado la función setter por completo y itll ejecutar), entonces usted tendrá que ejecutar una función separada como dijo Sandro .

Otros consejos

creo que esto puede ser una limitación de AS3. Se puede crear una función privada llamada setValue () o si su conjunto en tener un colocador que podría ser capaz de salirse con la suya, aunque no es muy bonita.

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;
        }
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top