我已經用私有setter和公共getter做了一個測試類。原始的setter設置了更多的值,但爲了簡單起見,我最小化了代碼。當類被實例化時私人setter不可訪問(ActionScript 3)
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得到這個錯誤(原文如此!):
Multiple markers at this line:
-1178: Attempted access of inaccessible property isLoggedIn through a reference with static type Lib:Test.
-1059: Property is read-only.
-isLoggedIn
注意isLoggedInSet (false);
工作正常。這是一個錯誤還是一個功能?感覺像一個bug ...或者我做錯了什麼?
編輯:這種感覺更是錯的,但它的工作原理:
private function get isLoggedIn():Boolean
{
return (_isLoggedIn == true && _data != null);
}
public function get isLoggedInPublic():Boolean
{
return isLoggedIn;
}
可能重複的[ActionScript - 只讀屬性和專用集方法?](http://stackoverflow.com/questions/5465793/actionscript-read-only-property-and-private-set-method) – poke