history

青木日記 RSS

<前の日 | この月 | 次の日>

2005-10-30

配列を引数に渡して呼び出す

http://www.lostway.org/~tko/cgi-bin/bakagaiku.rb?bakaid=20051029

> む。Cでのメソッドの定義として、引数をRubyの配列で受け取るのはあるけど、
> 呼び出しではRubyの配列を渡せるものはないのか。つまり:

つ rb_apply

というのはいいとして。どうやったら 「配列を引数に渡して呼び出す rb_funcall」 という機能から rb_apply に辿りつけるかを考えてみたい。

  1. 最初から知っている
  2. ReFe で検索
  3. リファレンスマニュアルのそれっぽいところを全部見る
  4. ソースコードを読む

うーん、結局ソースコードを読まないとだめそうな気がするな。 具体的にはこんなふうに見る。

~ % list-function ~/src/ruby/eval.c | grep -v '^static ' | less
           :
           :
VALUE rb_with_disable_interrupt(VALUE (*proc) (/* ??? */), VALUE data)
VALUE rb_apply(VALUE recv, ID mid, VALUE args)
VALUE rb_funcall(VALUE recv, ID mid, int n, ...)
VALUE rb_funcall2(VALUE recv, ID mid, int argc, const VALUE *argv)
VALUE rb_funcall3(VALUE recv, ID mid, int argc, const VALUE *argv)
VALUE rb_call_super(int argc, const VALUE *argv)
void rb_backtrace(void)
           :
           :

と、さりげなく list-function などという独自コマンドを使ったりして。

そのうえで ReFe で調べる。

~ % refe -e rb apply
: VALUE rb_apply(VALUE recv, ID mid, VALUE args)
    オブジェクト recv のメソッド mid を
    引数 args とともに呼び出します。
 

リファレンスマニュアルを見て調べるっても、 eval.c にありそうだ、くらいはわかってないとだめだしなあ。 もうちょっとエントリの分類とか検索について考えるべきだろうか……。

あとはあれか。以前書いた拡張ライブラリ作成マニュアル。 いま読むとけっこうアラがあるのう。

(19:50)

日記ドリブン

DDD (Diary Driven Development) という単語を提案してみるわけです。

(19:51)

名前
メールアドレス

<前の日 | この月 | 次の日>
2002|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|04|05|06|09|10|
2009|07|
2010|09|

Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved. LIRS