2

http://lua-users.org/wiki/CppLuaDataPassing有这个代码从 C++ 创建一个 Lua 表:

   // set first element "1" to value 45
   lua_pushnumber( state, 1 );
   lua_pushnumber( state, 45 );
   lua_rawset( state, -3 );

   // set the number of elements (index to the last array element)
   lua_pushliteral( state, "n" );
   lua_pushnumber( state, 1 );
   lua_rawset( state, -3 );

根据该示例,最后一个块似乎暗示 Lua 表具有一些特殊含义的键“n”,它存储最后一个数组元素的索引。

但我在Lua Manual中找不到任何参考。

  • 我的猜测是对还是错?

  • 如果它是正确的,有人可以给我一个很好的参考来解释这个“n”键吗?

  • 如果错了,示例中第二个代码块的含义是什么?

  • 如果它是正确的,是在 C++ 中为 Lua 读取创建一个有效表所需的最后一个索引分配(假设 Lua 代码不会修改表)

4

2 回答 2

2

它曾经是保持表格大小的惯例。我相信在 lua 5.1 中,他们不赞成将其作为一种有利于#操作员的做法,因为有时它似乎会与人们在他们的表中填充的数据发生神奇的冲突。

于 2012-12-06T22:16:58.313 回答
0

看看这个:http ://www.lua.org/pil/19.1.html

n表示数组的长度。它最常与getn()函数一起使用,它只是返回表中元素的数量。

于 2012-12-06T22:12:53.287 回答