- 时间:2022-09-29 14:36 编辑: 来源: 阅读:
- 扫一扫,手机访问
摘要:Lua 学习笔记之C API 遍历 Table实现代码
Lua 通过一个虚拟栈与 C 的交互,正数索引自底向上取值,负数索引自顶向下取值。
Lua 中的 Table(表)结构可以使用任何数据作为 key 进行取值。使用 C API 访问 Table 中的元素有两种方法:
[url=http://www.lua.org/manual/5.1/manual.html#lua_next]手册[/url]中记载的遍历方法,但这种方法在遍历时并没有一定的遍历顺序,于是便又有了下面的方法。
[b]用整数 Key 进行并不那么完美的遍历[/b]
lua_getglobal(L, t);
len = lua_objlen(L, -1);
for (i = 1; i <= len; i++) {
lua_pushinteger(L, i);
lua_gettable(L, -2);
/* 此时栈顶即为 t[i] 元素 */
lua_pop(L, 1);
}
这种方法无视了非整数 key,但可以保证遍历顺序。如果只关注整数 key,可以考虑用这种遍历方法 :)