有了上一篇 Lua源码揭秘(二)一个简单的数学扩展库函数的经验之后,我们尝试写稍微复杂一点的库函数。
我们直接打开ltablib.c(再次强调:在实际工作中的标准做法是在宿主语言中实现)。
添加以下代码:
static in values(lua_State *L)
{
luaL_checktype(L, 1, LUA_TTABLE);
lua_newtable(L);
lua_pushnil(L);
int i = 0;
while (lua_next(L, 1))
{
lua_rawseti(L, 2, ++i);
}
return 1;
}
static in keys(lua_State *L)
{
luaL_checktype(L, 1, LUA_TTA