表格

表是具有键和值的条目的集合。它们是提供的唯一聚合数据结构。所有其他数据结构(数组、列表、集合等)都是从表中构建的。表键和值可以是任何类型,包括其他表。同一表中的键和值可以混合类型。

  • 表构造函数
  • 表使用情况
  • 表格作为数组
  • 表格作为记录

表构造函数

表构造函数允许您指定具有键和关联值的表。语法是:

{[key1] = value1, [key2] = value2,…}

其中键和值是表达式。如果键是不是保留字的字符串,则可以省略键周围的括号和引号。示例:

{key1 = " value1 ", key2 = " value2 ", key3 = " value3 "}

{} 简单地指定一个空表。

在赋值中可以使用表构造函数来设置一个变量来引用表。示例:

本地t2 = {key1 = " value1 ", key2 = " value2 ", key3 = " value3 "}

请注意,表本身是匿名的。多个变量可能引用同一个表。继续上面的例子:

本地t3 = t2-t2和t3都是指同一个表

表格使用

正如您所期望的那样,您可以使用键来查找表中的值。语法是表(键),其中表是表引用(通常是分配表的变量),关键是提供键的表达式。如果在表达式中使用,并且该键存在于表中,则返回与该键关联的值。如果密钥不在表中,则返回零。如果将其用作赋值中的变量,并且该键不存在于表中,则会为键和值创建一个新条目。如果表中已存在密钥,则会将密钥的值替换为新值。示例:

本地t ={} -设置t为一个空表t[" k1 "] = " v1 " -为key " k1 "和value " v1 "创建一个条目v1 = t[" k1 "] -设置v1为key " k1 " = " v1 " t[" k1 "] = " new_v1 " -设置key " k1 "的值为" new_v1 "

表格作为数组

传统数组可以使用具有整数键作为索引的表来实现。一个数组可以有任何索引,包括负索引,但约定是在索引1处启动数组(而不是像C和Java这样的语言那样0)。这样的数组有一个特殊用途的表构造函数:

{value1, value2, value3,…}

然后,数组引用就是[数组索引]。

长度运算符#返回连续索引从1开始的数组中元素的数量。示例:

Local a = {" value1 ", " value2 ", " value3 "} Local length = #a -设置length为数组a = 3的长度

数组可以是稀疏的,其中只有定义的元素被分配。但 # 不能用于具有非连续索引的稀疏数组。示例:

本地的sparse_array ={} -设置一个空数组sparse_array[1] = " value1 " -添加一个元素在索引1 sparse_array[99] = " value99 " -添加一个元素在索引99

多维数组可以设置为表的表。例如,可以通过以下方式设置3 x3矩阵:

当地m ={1,2,3},{4、5、6},{7 8 9}}当地v22 = m[2][2]——v22设置为5

表格作为记录

带有字段的记录可以作为带有字段名称键的表实现。参考表单表。场可用于表格["字段”)。示例:

local person = {name = " John Smith ", phone = " 777-777-7777 "} local name = person.name -设置name为" John Smith "

表数组可用于一系列记录。示例:

{{name = " John Smith ", phone = " 777-777-7777 "}, {name = " Jane Doe ", phone = " 888-888-8888 "}…}

name =人[2]. name -将名称设置为“Jane Doe”

表格