当吸气剂/调节器具有不同的可见度不明确的引用(Ambiguous reference when ge

2019-10-20 14:57发布

下面的代码引发暧昧参考 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标准。

之前有人问这些问题:

  • 私人setter方法做是有意义的。
  • 模糊性还与自定义命名空间的情况下(这是我面临的问题)。

Answer 1:

这的确是在编译器中的错误,它是在错误中列出 。 它指出,它的开发者oversite并不会很快被固定的任何时间。

如果你需要专门跑一个函数来设置私有(而不只是分配的价值,在这种情况下,你可以完全离开了setter函数和ITLL运行),那么你将不得不为桑德罗说来运行一个单独的功能。



Answer 2:

我想这可能是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;
        }
    }
}


文章来源: Ambiguous reference when getter/setter have different visibilities