【发布时间】:2011-03-20 08:10:12
【问题描述】:
在 Lua 中,您可以创建一个表,其键本身就是表:
t = {}
t[{1,2}] = 2
我想知道如何使用 C API 做类似的事情。也就是说,我正在编写一个可从 Lua 调用的 C 函数,它将返回一个带有表键的表。我尝试将一个表作为键推送,然后使用 lua_settable,但它似乎什么也没做。
编辑:相关代码:
lua_createtable(L, 0, n);
for(i = 0; i < n; ++i){
// push the key table
lua_createtable(L, 2, 0);
for(j = 0; j < 2; ++j){
lua_pushinteger(L, j+1);
lua_pushinteger(L, j);
lua_settable(L, -3);
}
// push the value table
lua_createtable(L, 4, 0);
for(j = 0; j < 4; ++j){
lua_pushinteger(L, j+1);
lua_pushnumber(L, j);
lua_settable(L, -3);
}
lua_settable(L, -3);
}
编辑:我很笨;我在最后使用lua_objlen(L, -1) 来检查表的大小,由于没有整数键控条目,它返回 0。另外,在处理表格的 Lua 代码中,我使用了ipairs 而不是pairs。愚蠢的错误。
【问题讨论】:
标签: lua