2011-07-17 7 views
0

メソッドの変数にそのメソッドでしかアクセスできない方法については、stackoverflow(今は見つかりませんでした)の質問を読んでいますが、コードは答えがホテルルームの類推である場合でも機能します。 AS3では、プリミティブでないものはすべて参照として渡されると考えています。したがって、次のコードはその質問と同じで、動作することは保証されていません。AS3 - 引数への参照は、それは悪いですか?

public class Testy { 
    private var foo:Array; 

    public function Testy(input:Array) { 
     // Allow the whole class to access it 
     foo = input; 
    } 

    public function traceFoo(){ 
     trace(foo); 
    } 

} 

ここで、fooはクラスのコンストラクタの入力引数への参照になります。この安全なコード/良い方法ですか?ありがとう!

答えて

1

はい元の配列を操作したくない限り、これは安全です。元の配列を操作する場合は、配列をパブリック変数にするかパブリックgetter/setterを使用してパブリックアクセスを許可します。

1

あなたが説明したことはプロパティであり、オブジェクト指向プログラミングのカプセル化とインラインです。

 

package 
{ 
    import flash.display.Sprite; 

    public class Testy extends Sprite 
    { 
     private var _foo:Array; 

     public function get foo():Array 
     { 
      return _foo; 
     } 

     public function set foo(value:Array):void 
     { 
      _foo = value; 
     } 

     public function Testy() 
     { 
      super(); 
     } 

    } 
} 
0

はまた、それがカプセル化を破るないゲッターに()_foo.concatを返す方が良いでしょう:

この

はゲッターとセッターを公開します。

関連する問題