第15回 RHG読書会

1月 18th, 2010 admin Posted in CSNAGOYA |

img_0927

CSNagoya勉強会にてRubyソースコード完全解説の読書会であるRHG読書会を開催しました。今回は第 15 章「メソッド」で、メソッドの探索と起動についてのお話でした。

メモ

・引数の処理は、引数無し・通常引数のみ・配列引数やブロック引数があるの3つにおおきくわけられる
・配列引数やブロック引数のメモリ確保は1.7系ではALLOCA_N()を使っているが、1.8では使われていない
・メソッドの探索はsearch_method()で行うのだが、この結果はキャッシュを使って2回目以降の呼び出しを高速化するようにしている。
・デフォルト引数にeval()を渡すこともできる

RUBY:
  1. def f(a = eval("def f();2;end"))
  2.  1
  3. end
  4.  
  5. f(true) #=> 1
  6. f() #=> 1 (ここでevalが評価される)
  7. f(true) #=> wrong number of arguments (1 for 0)
  8. f() #=> 2

・Cで定義したメソッドからのsuperは原則禁止になっている

まとめ

・メソッドキャッシュがないとどれぐらい遅いのか調べてみました。 → ruby1.8でメソッドキャッシュが無いとどれぐらい遅くなるのか(竹内関数) - toyoshiの日記
・東京からのサプライズゲストが。こんなに驚いたのは久しぶりだった

関連するエントリ

Leave a Reply