[問題] RARRAY_LEN取得錯誤長度
環境: Ruby 1.9.3p194 MinGW32 4.7.1
狀況:
打算在C擴充中取得陣列的長度
底下是程式碼:
VALUE ary=rb_iv_get(self,"@ary");
int size=FIX2INT(RARRAY_LEN(ary));
那個ary裡面是[
[#<SDL::Surface:0x106e0d8>, 96, -96, 1],
[#<SDL::Surface:0x106e0a8>, 0, 0, 10]]
也就兩個陣列 裡面裝了圖片 還有xyz三個數字
不過得到的長度卻是 1
並不是2...
後來改成呼叫函式
rb_funcall(ary,rb_intern("size"),0)
得到的結果是正確的 2
照理說RARRAY_LEN應該和ary.length等價不是嗎?
另外有測:
VALUE ary=rb_ary_new();
rb_ary_push(ary,self);//其實放什麼都沒差別...
printf("test0 %d",FIX2INT(RARRAY_LEN(ary)));
rb_ary_push(ary,rb_ary_new());
printf("test1 %d",FIX2INT(RARRAY_LEN(ary)));
得到的結果是 test0 0test1 1
原因不明...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.122.198.212
※ 編輯: AIGecko 來自: 140.122.198.212 (12/22 12:53)
→
12/22 14:13, , 1F
12/22 14:13, 1F
→
12/22 14:14, , 2F
12/22 14:14, 2F
→
12/22 22:32, , 3F
12/22 22:32, 3F
→
12/29 23:38, , 4F
12/29 23:38, 4F
→
12/29 23:42, , 5F
12/29 23:42, 5F
→
12/29 23:42, , 6F
12/29 23:42, 6F
→
01/03 18:27, , 7F
01/03 18:27, 7F
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章