2011-11-08 64 views
1

我已經用私有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; 
} 
+1

可能重複的[ActionScript - 只讀屬性和專用集方法?](http://stackoverflow.com/questions/5465793/actionscript-read-only-property-and-private-set-method) – poke

回答

5

This is a bug in the compiler。遺憾的是,獲取者和制定者必須具有相同的可見性。如果您只需要從類內設置變量,或者使用不同名稱的setter函數(如isLoggedInSet),則直接使用該變量。

+0

你是否有一個來源? – JeffryHouser

+0

我已將鏈接添加到我的答案中。 – weltraumpirat

+0

嗯......看起來有點不同,但它回答了我的問題。我在這裏添加了錯誤https://bugs.adobe.com/jira/browse/ASC-4379 – Nux

相關問題