Class¶
Details¶
APIs¶
void mrb_define_method_raw(mrb_state*, struct RClass*, mrb_sym, struct RProc *)¶
- RProc 構造体を使ってクラスメソッドを定義する
- mrb_define_method() では関数ポインタをメソッドの定義として渡していたが、こちらは RProc
- クラスの kh(内部的なハッシュ、で合ってる?)に第三引数のシンボルのキーに対し RProc ポインタをセット
struct RProc *mrb_method_search(mrb_state*, struct RClass*, mrb_sym)¶
- RiteVM 中で定義済みのメソッドを探索する
- 中で mrb_method_search_vm() を呼んでる
- メソッドが見つからなかった場合の追加処理がある
mrb_method_search_vm()¶
- クラス内に定義されるメソッドを、 khash をなめることで探索する
- 見つからなかったら親クラスをたどる