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

它确实是编译器中的一个错误,并且它在错误中列出。它表示它是开发商的过度网站,不会很快修复。

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

于 2010-03-25T07:59:26.450 回答
1

我认为这可能是 AS3 的限制。您可以创建一个名为 setValue() 的私有函数,或者如果您设置了一个 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;
        }
    }
}
于 2010-03-24T18:35:59.417 回答