櫓日誌

<< 続:Rubyで内包表現 | main | オブラブ2006夏イベント >>
スポンサーサイト

一定期間更新がないため広告を表示しています

| スポンサードリンク | - | | - | - |
Binding.of_caller

Binding.of_caller を調べてみました。クリティカルセーフなのはもちろん、継続を使って効率良く caller bindingを取得してます。(るびまの記事で解説があったのにきちんと理解できてなかったよ。。)たとえば、関数Aから呼び出された関数Bの中で Binding.of_caller を使うと以下のような流れになります。

AからBを呼び出す->B内でBinding.of_caller(&block)を実行->継続ポイントをセット->set_trace_funcをセット->関数Bからreturnして関数Aに戻る->set_trace_func により継続ポイントから再開->関数Aのbindingを取得->Aのbindingをパラメータにして blockを実行。

ただし、Binding.of_caller は関数Bの最後の式にしないと set_trace_funcが期待通りに動かない(このために Binding.of_callerはクロージャになっている)。ややこしいけど、うまいなぁ。自分で実装してたら思いつかないな。

| YAGURA | ソフトウェア | 19:07 | comments(0) | trackbacks(1) |
スポンサーサイト
| スポンサードリンク | - | 19:07 | - | - |









http://yaglog.jugem.jp/trackback/37
-
管理者の承認待ちトラックバックです。
| - | 2006/10/26 1:17 PM |
     12
3456789
10111213141516
17181920212223
24252627282930
<< September 2017 >>

このページの先頭へ