空の Ruby の配列を作成し返します。
対応するRubyコード
ary = Array.new または ary = []
使用例
VALUE ary; ary = rb_ary_new();
長さ len 分だけメモリを確保した、 長さゼロの Ruby の配列を作成し返します。
対応するRubyコード
ary = Array.new(len)
使用例
VALUE ary; long len; ... ary = rb_ary_new2(len);
長さ n で要素に i0 i1 i2 …を格納した Ruby の配列を作成し返します。
対応するRubyコード
ary = Array[i0, i1, i2...] または ary = [i0, i1, i2...]
使用例
VALUE ary; int i[3] = { 1, 2, 3 }; ary = rb_ary_new3(3, INT2FIX(i[0]), INT2FIX(i[1]), INT2FIX(i[2]));
[a,b]
を返します。
対応するRubyコード
[a, b]
使用例
VALUE assoc_string(VALUE str_a, VALUE str_b) { Check_Type(str_a, T_STRING); Check_Type(str_b, T_STRING); return rb_assoc_new(str_a, str_b); }
ary のインデックス offset の要素を返します。
インデックスが範囲を越えるときは Qnil
を返します。
負のインデックスも使えます。
対応するRubyコード
ary[offset] または ary.at(offset)
使用例
VALUE num; num = rb_ary_entry(ary, offset); printf("%d\n", FIX2INT(num)); キャストを使った要素の参照方法 VALUE num = RARRAY(ary)->ptr[offset];
argc が 1 のときは ary[*argv]
、
2 のときは ary[argv[0], argv[1]]
を返します。
配列 ary のインデックス idx に val を格納します。idx が範囲を越えるときは Ruby レベルと同じく自動的にサイズが拡張されます。
対応するRubyコード
ary[idx] = val
使用例
VALUE ary; int idx; int n[5] = { 1, 2, 3, 4, 5 }; ary = rb_ary_new(); for (idx=0; idx<5; idx++) rb_ary_store(ary, idx, INT2FIX(n[idx]));
配列 ary の末尾に item を追加します。
対応するRubyコード
ary.push(item) または ary << item
使用例
VALUE ary = rb_ary_new(); char line[4096]; while ((gets(line)) != NULL){ item = process_apache_log(line); rb_ary_push(ary, item); }
配列 ary の末尾の要素をとりのぞき返します。
空配列のときは Qnil
を返します。
対応するRubyコード
val = ary.pop
使用例
last_error = rb_ary_pop(err_ary); VALUE str = rb_funcall(last_error, rb_intern("to_s"), 0);
配列 ary の先頭の要素を取り除き返します。
空配列のときは Qnil
を返します。
対応するRubyコード
val = ary.shift
配列 ary の先頭に item を挿入します。
ary.to_s
使用例
void debug_print(VALUE ary) { Check_Type(ary, T_ARRAY); printf("%s", STR2CSTR(rb_ary_to_s(ary))); }
ary.sort
ary.include? item
ary.delete
ary.clear
ary.concat x