ruby-c-extension

    6熱度

    1回答

    在Ruby中, begin # ... rescue # ... end 不會趕上不在的StandardError子類例外。在C中, rb_rescue(x, Qnil, y, Qnil); VALUE x(void) { /* ... */ return Qnil; } VALUE y(void) { /* ... */ return Qnil; } 會做同

    2熱度

    1回答

    我正在與什麼應該是一個相當基本的迭代。我知道我可以用Ruby代碼來完成它,但我已經在C擴展中工作,所以我寧願用C代碼保留這個函數 - 尤其是因爲這個應該工作(單向或者其他方式) )沒有問題。 問題在於rb_block_call。這裏是README.EXT如何描述rb_block_call: VALUE rb_block_call(VALUE recv, ID mid, int argc, VALU

    1熱度

    1回答

    我在一個Ruby C擴展中存儲了一個proc數組,我需要通過和instance_eval每個proc。問題是,instance_eval只接受塊,而不是proc。這是不是在Ruby的一個問題,我可以簡單地去: proc_list.each { |my_proc| @receiver.instance_eval(&my_proc) } 但是我不確定如何去這個使用Ruby C API。

    3熱度

    1回答

    我正在爲Ruby編寫一個C擴展,它確實需要合併兩個散列,但rb_hash_merge()函數在Ruby 1.8.6中爲STATIC。我曾嘗試改爲使用: rb_funcall(hash1, rb_intern("merge"), 1, hash2); 但這太慢了,並且性能在此應用程序中非常關鍵。 有沒有人知道如何去執行這種合併效率和速度? (注意我試着簡單地查看rb_hash_merge()的源

    3熱度

    1回答

    所有,我使用rdoc生成包含C-extensions的Ruby代碼的文檔,但是我的方法參數有問題。 RDOC不能正確分析自己的名字,而是使用P1,P2等 所以,首先,我的擴展實際上編譯爲C++,所以我必須使用看起來像這樣的函數定義: static VALUE MyMethod(VALUE self, VALUE flazm, VALUE saszm) { return Qnil;