在实例化类时无法访问专用setter(ActionScript 3)

Nux*_*Nux 1 apache-flex actionscript-3 flash-builder

我用私人制定者和公共吸气者做了一个测试课.原始的setter设置了更多的值,但为了简单起见我最小化了代码.

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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,它编译得很好,我认为它按预期工作.但是,当我尝试在我的主mxml中使用它时:

import Lib.Test;
protected function fubar():void
{
    var test:Test = new Test(); 
}
Run Code Online (Sandbox Code Playgroud)

我在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
Run Code Online (Sandbox Code Playgroud)

请注意,isLoggedInSet (false);工作正常.这是一个错误还是一个功能?感觉就像一个虫子......或者我做错了什么?

编辑:这感觉更加错误,但它的工作原理:

private function get isLoggedIn():Boolean
{
    return (_isLoggedIn == true && _data != null);
}
public function get isLoggedInPublic():Boolean
{
    return isLoggedIn;
}
Run Code Online (Sandbox Code Playgroud)

wel*_*rat 5

这是编译器中的一个错误.不幸的是,吸气剂和定位器都必须具有相同的可见性.如果您只需要在类中设置变量,或者使用具有不同名称的setter函数(就像您的那样isLoggedInSet),请直接使用变量.