第15回 RHG読書会
1月 18th, 2010 admin Posted in CSNAGOYA |

CSNagoya勉強会にてRubyソースコード完全解説の読書会であるRHG読書会を開催しました。今回は第 15 章「メソッド」で、メソッドの探索と起動についてのお話でした。
メモ
・引数の処理は、引数無し・通常引数のみ・配列引数やブロック引数があるの3つにおおきくわけられる
・配列引数やブロック引数のメモリ確保は1.7系ではALLOCA_N()を使っているが、1.8では使われていない
・メソッドの探索はsearch_method()で行うのだが、この結果はキャッシュを使って2回目以降の呼び出しを高速化するようにしている。
・デフォルト引数にeval()を渡すこともできる
RUBY:
-
def f(a = eval("def f();2;end"))
-
1
-
end
-
-
f(true) #=> 1
-
f() #=> 1 (ここでevalが評価される)
-
f(true) #=> wrong number of arguments (1 for 0)
-
f() #=> 2
・Cで定義したメソッドからのsuperは原則禁止になっている
まとめ
・メソッドキャッシュがないとどれぐらい遅いのか調べてみました。 → ruby1.8でメソッドキャッシュが無いとどれぐらい遅くなるのか(竹内関数) - toyoshiの日記
・東京からのサプライズゲストが。こんなに驚いたのは久しぶりだった
Leave a Reply