無名関数の乱用注意
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, /* ここに何をいれるんだ!参照先がわきゃんねーっ!! */); }
ある男の無名関数の参照がとれねぇ!チクショー、だから酒はやめられねぇーんだよ!
無名関数も酒呑みも、自分自身でなければやめることはできないのだろうか
方法を探し中