表
表是 Lua 中唯一可用的内置数据结构。这要么优雅简洁,要么令人困惑,这取决于你如何看待它。
Lua 表是键值对的集合,其中键是唯一的,键和值都不是 nil
。因此,Lua 表可以类似于来自其他语言的字典,散列映射或关联数组。可以使用表构建许多结构模式:堆栈,队列,集合,列表,图形等。最后,表可用于在 Lua 中构建类并创建模块系统。
Lua 没有对表的使用方式强制执行任何特定规则。表中包含的项可以是 Lua 类型的混合。因此,例如,一个表可以包含字符串,函数,布尔值,数字,甚至其他表作为值或键。
具有以 1 开头的连续正整数键的 Lua 表被称为具有序列。具有正整数键的键值对是序列的元素。其他语言称这是一个基于 1 的数组。某些标准操作和函数仅适用于表的序列,而某些操作和函数在应用于没有序列的表时具有非确定性行为。
将表中的值设置为 nil
会将其从表中删除。迭代器将不再显示相关密钥。编码带序列的表时,重要的是要避免破坏序列; 只删除最后一个元素或使用一个函数,如标准 table.remove
,它将元素向下移动以缩小间隙。