2011-11-08 14 views
1

プライベートセッターとパブリックゲッターでテストクラスを作成しました。元のセッターはより多くの値を設定しましたが、シンプルさのためにコードを最小限に抑えました。クラスのインスタンス化時にプライベートセッターにアクセスできない(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でこれを使用しよう:isLoggedInSet (false);が正常に動作することを

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 

注:

import Lib.Test; 
protected function fubar():void 
{ 
    var test:Test = new Test(); 
} 

私はTest.as(!原文のまま)で、このエラーが発生します。これはバグか機能ですか?バグのように感じる...または私は何か間違っている?

EDIT:これはもっと間違っていると感じ、それが動作します:

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。残念なことに、ゲッターとセッターの両方が同じ可視性を持たなければなりません。変数をクラス内からのみ設定する必要がある場合は変数を直接使用し、別の名前を持つ設定関数(isLoggedInSetのように)を使用します。

+0

その源泉はありますか? – JeffryHouser

+0

私は私の答えにリンクを追加しました。 – weltraumpirat

+0

えええええええええええええええええええええええええええええええええええええええええええええええと>追加の情報とリンクについては、https://bugs.adobe.com/jira/browse/ASC-4379 – Nux

関連する問題