请解释一下,我需要在C语言的Lua栈中放置一个类似的表:
table_ =
{
param_1 = "Y1234",
param_2 = "XXX",
param_3 = "M"
}
我找到了“lua_createtable”函数:
https://www.lua.org/manual/5.3...一个新表格
void lua_createtable (lua_State *L, int narr, int nrec);
创建一个新的空表并将其压入堆栈。参数narr是一个提示,提示表将有多少元素作为一个序列;参数nrec是一个关于表将有多少OTHER元素的提示。Lua可以使用这些提示为新表预分配内存。当您提前知道表将有多少元素时,此预分配对性能非常有用。否则,您可以使用函数lua_newtable。
我不明白-参数narr和nrec。
narr -表中有多少个元素将作为一个序列。什么是“作为序列”?序列是什么?
nrec -是一个关于表中有多少其他元素的提示。其他元素是什么意思?什么其他元素?
而且不清楚的是,在我创建了一个空表并在堆栈上标记了它之后,我如何才能用“键-值”值填充这个表呢?
1条答案
按热度按时间rqqzpn5f1#
来自同一手册:
只有一个边框的表称为序列。例如,表{10,20,30,40,50}就是序列,因为它只有一个边框(5)表格{10,20,30,nil,50}有两个边界(3和5),因此它不是一个序列。表{nil,20,30,nil,nil,60,nil}有三个边界(0、3和6),所以它也不是序列。表{}是边界为0的序列。请注意,非自然键不会影响表是否为序列。
至于填充该表,您可以使用
lua_setfield
(手动),因此可以执行以下操作: