我知道: http: //lua-users.org/wiki/SimpleLuaApiExample
它向我展示了如何逐项构建表(键,值)对。
假设相反,我想构建一个巨大的表(比如说一个 1000 个条目的表,其中键和值都是字符串),在 lua 中是否有一种快速的方法(而不是每个条目 4 个 func 调用:
push
key
value
rawset
我知道: http: //lua-users.org/wiki/SimpleLuaApiExample
它向我展示了如何逐项构建表(键,值)对。
假设相反,我想构建一个巨大的表(比如说一个 1000 个条目的表,其中键和值都是字符串),在 lua 中是否有一种快速的方法(而不是每个条目 4 个 func 调用:
push
key
value
rawset
您所写的是解决此问题的快速方法。 Lua 表设计精巧,速度足够快,不需要某种虚假的“提示”说“我希望这张表可以增长到包含 1000 个元素”。
对于字符串键,您可以使用lua_setfield
.
不幸的是,对于关联表(字符串键、非连续整数键),不,没有。
对于数组类型的表(使用常规的 1...N 整数索引),有一些性能优化函数,lua_rawgeti
并且lua_rawseti
:http ://www.lua.org/pil/27.1.html
您可以使用 createtable 创建已具有所需插槽数的表。但是,在那之后,除了
for(int i = 0; i < 1000; i++) {
lua_push... // key
lua_push... // value
lua_rawset(L, tableindex);
}