arr=Array.new(3)
arr[0]=5
arr[1]=3
arr[2]=2
这些行应该调用这个函数,https://github.com/ruby/ruby/blob/trunk/array.c#L568根据这个,http://www.ruby-doc.org/core-1.9.3/数组.html
所以我在那里添加了几行来显示数组的值。但我没有得到预期的结果。
else {
memfill(RARRAY_PTR(ary), len, val);
ARY_SET_LEN(ary, len);
int i;
int result;
result = 0;
VALUE *s_arr = RARRAY_PTR(ary);
for(i = 0; i < len; i++) {
result = LONG2NUM(s_arr[i]);
printf("r: %d\n",result);
}
}
我得到这样的结果:
arr=Array.new(3)
arr[0]=5
arr[1]=3
arr[2]=2
r: 9
r: 9
r: 9
为什么是这个结果?为什么是9?
我已经按照这些来解决它:
- 如何使用 RubyInline 将 ruby 数组转换为 C 数组?
- https://github.com/ruby/ruby/blob/trunk/README.EXT#L131
- https://github.com/ruby/ruby/blob/trunk/include/ruby/ruby.h#L708
- https://github.com/ruby/ruby/blob/trunk/include/ruby/ruby.h#L731
任何人都可以帮助在 C 中显示/打印 Ruby 数组的值吗?