Lua编程中的数组大小


通常情况下,数组的大小是在遇到**nil**之前数组中存在的元素个数。在许多情况下,数组中不允许出现**nil**,但在某些应用中,包含**nil**并非问题。

如果允许在数组中使用nil值,则必须有一些函数来显式设置数组的大小。

Lua提供了两个函数来操作数组的大小,它们是:

  • setn
  • getn

**setn**函数用于显式设置数组的大小,而**getn**函数用于获取由setn设置的大小。

底层工作原理是什么?

每当调用**table.setn(t, n)**时,它会在内部(弱)表中将**t**与**n**关联起来,而调用**table.getn(t)**则会检索在该内部表中与t关联的值。

如果表**t**具有一个值为数字的字段**"n"**,则**setn**会更新此值,然后**getn**会返回它。getn函数还有一个最后的选择:如果它无法通过任何这些选项获取数组大小,它会使用简单的方法:遍历数组查找其第一个nil元素。因此,你始终可以在数组中使用**table.getn(t)**并获得合理的结果。

让我们考虑几个示例,我们首先将使用简单的情况,在这种情况下,我们将使用setn和getn,而数组没有n字段。

示例

print(table.getn{10,2,4})
--> 3
print(table.getn{10,2,nil})
--> 2
print(table.getn{10,2,nil; n=3})
--> 3
print(table.getn{n=1000})
--> 1000

输出

3
2
3
1000

现在让我们在数组内部使用n字段。

示例

考虑以下示例:

a = {n=10}
print(table.getn(a)) --> 10
table.setn(a, 1000)
print(table.getn(a)) --> 1000

输出

10
1000

更新于:2021年7月20日

4K+ 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.