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/ Array.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配列の値を表示/印刷するのを手伝ってもらえますか?