2012-10-23 136 views
2

特林得到與lua_rawlen表的長度,這樣如何工作

lua_createtable(L, 0, 0); 

lua_pushstring(L, "k0"); 
lua_pushstring(L, "v0"); 
lua_settable(L, -3); 
lua_pushstring(L, "k1"); 
lua_pushstring(L, "v1"); 
lua_settable(L, -3); 

printf("%d\n", lua_rawlen(L, -1)); 

輸出爲0碼,似乎應該是2,這有什麼錯呢?感謝您的任何建議。

回答

3

函數lua_rawlen返回序列的長度,而不調用可選的metamethod __len。它等價於Lua函數rawlen,它與#運算符相同,當沒有這樣的元方法時__len

您的表格不是一個序列,因爲您只放置了字符串鍵。序列的鍵必須是從開始的連續整數。對於密鑰,而不是"k0""k1",請分別嘗試12

例子:

lua_createtable(L, 0, 0); 

lua_pushstring(L, "v0"); 
lua_rawseti(L, -2, 1); 
lua_pushstring(L, "v1"); 
lua_rawseti(L, -2, 2); 

printf("%d\n", lua_rawlen(L, -1)); 
+0

它的工作,感謝您的回答! – liang