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,怎么回事?感谢您的任何建议。

4

1 回答 1

3

该函数返回序列lua_rawlen的长度而不调用可选的元方法。相当于 Lua 函数,在没有这种元方法的情况下与操作符相同。__lenrawlen#__len

你的表不是一个序列,因为你只放了字符串键。序列的键必须是从1开始的连续整数。代替键"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));
于 2012-10-23T09:55:11.563 回答