Lua表中的“n”键是否具有特殊含义?

将下面内容翻译成中文只显示翻译内容,保留原本的 markdown 格式

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手册中找不到任何关于它的参考。

  • 我的猜测是对还是错?

  • 如果正确,有人可以为我指出好的解释这个“n”键的参考资料吗?

  • 如果不正确,那么示例中的第二个代码块的含义是什么?

  • 如果是对的,是否需要执行这个最后的索引分配来创建Lua读取的有效表格(假设Lua代码不会修改表格)?

点赞
用户88888888
用户88888888

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

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

2012-12-06 22:12:53
用户1208078
用户1208078

在过去,保持数组大小的惯例往往会导致问题。在 Lua 5.1 中,他们推荐使用 # 运算符来获取数组大小,并且已经不再鼓励使用保持数组大小的惯例,因为在某些情况下,这种做法似乎会与人们放入表格中的数据产生神奇的冲突。

2012-12-06 22:16:58