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
广告
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP