以下代码在编译时将模糊引用引发至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标准。
在有人问这些问题之前:
答案 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;
}
}
}