0

如何从 Ruby 中的 C 代码返回一个数组?我正在使用内联 v3.12。

require 'inline'
class Object
inline(:C) do |builder|
  builder.c "
    VALUE some_method(VALUE s) {
      int s_len = RARRAY_LEN(s);
      int result = 0;
      int i = 0;

      VALUE *s_arr = RARRAY_PTR(s);

      for(i = 0; i < s_len; i++) {
        result += NUM2INT(s_arr[i]); 
      }

      return rb_float_new(result); // HERE I NEED ARRAY RETURN !!!!!
    }"
    end
end

a = Object.some_method([1,2,3,4])
puts a
  • 项目清单
  • 项目清单
  • 项目清单
  • 项目清单
4

1 回答 1

0

试试这个: rb_ary_new4(long length, VALUE *values") - 返回给定长度的新数组并填充 C 数组值。

它取自这里:http ://rubycentral.com/pickaxe/ext_ruby.html (部分常用方法)

于 2013-04-18T22:33:35.197 回答