Reference 型が欲しい

July 25, 2007category: Flash 

Reference 型を使いたいシーンが多々ある。例えば以下のようなコード。

var hoge:Hoge = new Hoge();
var task:HogeInitTask = new HogeInitTask(hoge);

これは、タスクで、Hoge 型の hoge を初期化するもので、タスクは任意のタイミングで実行される。タスクの中身は

class HogeInitTask {
  public function run():Void {
    this.hogeRef = HogeInitializer.doSomething();
  }
}

このような感じ。これだと、初期化の処理が代入なので、hogeRef が hoge への参照では無くなってしまう。従って

class HogeInitTask {
  public function run():Void {
    this.hogeRef.init(HogeInitializer.doSomething());
  }
}

メソッドの呼び出しにしているが、そもそもの設計がまずい気もする。

BeInteractive 製 Reference 型の、value を Object 型にしたくないとなると、各クラスごとに Reference 型を作らねばならないので、迷ったあげく上記の方法に逃げた。C# の ref パラメータの挙動が理想だ。

comments (0)

comments