当getter / setter具有不同的可见性时,模糊参考

时间:2010-03-24 16:18:54

标签: actionscript-3 visibility setter getter

以下代码在编译时将模糊引用引发至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标准。

在有人问这些问题之前:

  • 私人制定者确实有意义。
  • 自定义命名空间也存在歧义(这是我面临的问题)。

2 个答案:

答案 0 :(得分:2)

它确实是编译器中的一个错误,它是listed in the bugs。它表示它对开发人员不满意,不会很快修复。

如果你需要专门运行一个私有设置的函数(而不是只是分配值,在这种情况下你可以完全省略setter函数并且它会运行)那么你将不得不运行一个单独的函数,如Sandro所说

答案 1 :(得分:1)

我认为这可能是AS3的限制。你可以创建一个名为setValue()的私有函数,或者如果你的set有一个setter你可能能够逃脱这个,虽然它不是很漂亮。

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