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 パラメータの挙動が理想だ。