1

次のコードは、コンパイル時にあいまいな参照を発生させます。value

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

ECMA 標準を実際に読んだわけではありませんが、コンパイラに何らかのバグがあると思われます。

誰かがそれらの質問をする前に:

  • プライベートセッターは理にかなっています。
  • あいまいさは、カスタム名前空間にも存在します (これが私が直面している問題です)。
4

2 に答える 2

2

これは確かにコンパイラのバグであり、バグにリストされています。それは開発者のオーバーサイトであり、すぐには修正されないと述べられています。

プライベートに設定する関数を具体的に実行する必要がある場合 (単に値を割り当てるのではなく、その場合はセッター関数を完全に省略して実行することができます)、サンドロが言ったように別の関数を実行する必要があります。

于 2010-03-25T07:59:26.450 に答える
1

これは AS3 の制限である可能性があると思います。setValue() という名前のプライベート関数を作成するか、セッターを持つことを設定している場合は、これを回避できる可能性がありますが、あまりきれいではありません。

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;
        }
    }
}
于 2010-03-24T18:35:59.417 に答える