“n”键在Lua表中有一些特殊含义吗?

时间:2012-12-06 22:11:36

标签: c++ lua associative-array

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代码不会修改表)

2 个答案:

答案 0 :(得分:2)

它曾经是保持表格大小的惯例。我相信lua 5.1他们不赞成这种做法有利于#运算符,因为有时它似乎与人们在桌子上填充的数据神奇地发生冲突。

答案 1 :(得分:0)

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

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