無名関数の乱用注意

ActionScript 3.0の話なんだけど、、、
書いて思った、この記事、正直わけわかんねぇ
でも書いたから公開しとこ


無名関数ってよく使うのだけれど
なんかこれってできないのだろうかって思った
例をあげると


ex)
ある男が生まれ、そして酒を呑み始めます。
ところが、ある日、お金がつきてしまい酒が呑めなくなります

  • ある男が生れ落ちる

var ある男: アル中 = new アル中();
  • ある男は酒を飲みだす
ある男.addEventListener(Event.ENTER_FRAME, function (e: Event): void {
    酒を飲む;    // 金が減ります
}

これで男は飲み始めます
飲み続ける() では金が消耗します。
このままではアル中になってしまいますので、おとこの酒ライフに終着点を追加しました


  • 酒ライフに終着点を追加
ある男.addEventListener(Event.ENTER_FRAME, function (e: Event): void {
    酒を飲む;    // 金が減ります
    if (お金が尽きたら) {
        // 削除 (飲むことを断念します)
        e.target.removeEventListener(Event.ENTER_FRAME, arguments.callee);
    }
}

removeEventListener(Event.ENTER_FRAME, arguments.callee);
これで呼び出し元の無名関数の参照がとれるのでOKです。



しかし、このままでは男は「自分自身」でないと酒ライフを終えることはできないのでは?
そこで医者がいたとして、彼の酒を飲み続けるをやめさせることができるかチャレンジだ。


彼の飲み続けるをやめさせるには 彼のENTER_FRAMEイベントを削除しなければ、、、

  • 医者生まれる

var 医者: アル中 = new 医者();

ん、どうやら医者はアル中を継承しているようだ

  • 医者はある男に酒をやめさせたい
// 医者のメソッドとします
public function (患者: アル中): void {
    患者.removeEventListener(Event.ENTER_FRAME, /* ここに何をいれるんだ!参照先がわきゃんねーっ!! */);
}

ある男の無名関数の参照がとれねぇ!チクショー、だから酒はやめられねぇーんだよ!


無名関数も酒呑みも、自分自身でなければやめることはできないのだろうか
方法を探し中