Actionscript 3 实例化类时无法访问私有setter(ActionScript 3)
我用一个私有setter和一个公共getter创建了一个测试类。最初的setter设置了更多的值,但为了简单起见,我最小化了代码Actionscript 3 实例化类时无法访问私有setter(ActionScript 3),actionscript-3,apache-flex,flash-builder,Actionscript 3,Apache Flex,Flash Builder,我用一个私有setter和一个公共getter创建了一个测试类。最初的setter设置了更多的值,但为了简单起见,我最小化了代码 package Lib { public class Test { private var _data:String; private var _isLoggedIn:Boolean; // isLoggedIn getter and setter public function get
package Lib
{
public class Test
{
private var _data:String;
private var _isLoggedIn:Boolean;
// isLoggedIn getter and setter
public function get isLoggedIn():Boolean
{
return (_isLoggedIn == true && _data != null);
}
private function set isLoggedIn(value:Boolean):void
{
_isLoggedIn = value;
}
private function isLoggedInSet(value:Boolean):void
{
_isLoggedIn = value;
}
// constructor
public function Test()
{
isLoggedIn = false;
isLoggedInSet (false);
}
}
}
请注意,它编译得很好,我假设它可以按预期工作。但是,一旦我尝试在我的主mxml中使用它:
import Lib.Test;
protected function fubar():void
{
var test:Test = new Test();
}
我在Test.as(原文如此!)中发现了这个错误:
注意isLoggedInSet(false)代码>工作正常。这是一个bug还是一个特性?感觉像个虫子。。。还是我做错了什么
编辑:这感觉更加错误,但它可以工作:
private function get isLoggedIn():Boolean
{
return (_isLoggedIn == true && _data != null);
}
public function get isLoggedInPublic():Boolean
{
return isLoggedIn;
}
。不幸的是,getter和setter必须具有相同的可见性。如果只需要在类内设置变量,或者需要使用其他名称的setter函数(就像您的isLoggedInSet
)直接使用变量。。不幸的是,getter和setter必须具有相同的可见性。如果您只需要在类内设置变量,或者需要使用其他名称的setter函数(就像您的isLoggedInSet
),请直接使用该变量。您有相关的源代码吗?我已经添加了我答案的链接。嗯。。。看起来有点不一样,但它回答了我的问题。我在这里添加了这个bug,你有什么来源吗?我已经添加了我答案的链接。嗯。。。看起来有点不一样,但它回答了我的问题。我在这里添加了一个bug,它可能是
private function get isLoggedIn():Boolean
{
return (_isLoggedIn == true && _data != null);
}
public function get isLoggedInPublic():Boolean
{
return isLoggedIn;
}