Lua table.getn()返回0?

jim*_*imt 9 c lua

我已经将Lua嵌入到我的C应用程序中,并试图找出为什么在我的C代码中通过以下方式创建表:

lua_createtable(L, 0, numObjects);
Run Code Online (Sandbox Code Playgroud)

并且返回Lua,当我调用以下内容时将产生零结果:

print("Num entries", table.getn(data))
Run Code Online (Sandbox Code Playgroud)

(其中"data"是由lua_createtable创建的表)

有明确的数据桌子上,我可以在每个条目(字符串:用户数据)通过走对:

for key, val in pairs(data) do
  ...
end
Run Code Online (Sandbox Code Playgroud)

但是为什么table.getn(data)返回零?当我用lua_createtable创建它时,是否需要在表的元数据中插入一些东西?我一直在寻找lua_createtable使用的例子,我没有看到这在任何地方都做过....

Nic*_*las 25

table.getn(你不应该在Lua 5.1+中使用.使用长度运算符#)返回表格数组部分中的元素数量.

数组部分是以数字1开头的每个键,并且直到第一个值nil(不存在)为止.如果所有键都是字符串,那么表的数组部分的大小为0.

  • 说"使用长度运算符#"并且没有提及示例是很粗鲁的.这个答案所说的是,"要获得数组A的长度,请键入#A".它可能看起来微不足道,但它会让许多人失望并引起怀疑,因为你不能假设操作员按照你的想法行事,直到你测试并熟悉它.但仍然支持. (3认同)