Table(表)

简介: Table(表)

( Table )是 Lua 语言中最主要(事实上也是唯一的)和强大的数据结构。使用表, Lua 语言可以以一种简单、统一且高效的方式表示数值集合记录和其他很多数据结构。 Lua 语言也是用表来表示package )和其他对象。当调用函数 math.sin 时,我们可以认为是"调用了math库中函数sin";而对于 Lua 语言来说,其实际含义是:"以字符串"sin"为键检索表math"。


Lua 语言中的表本质上是一种辅助数组(associative array),这种数组不仅可以使用数值作为索引,也可以使用字符串其他任意类型的值作为索引( nil 除外)。


Lua 语言中的表要么是值要么是变量,他们都是对象object )。如果对 Java 或者 Scheme 中的数值概念比较熟悉,那么应该很容易理解上述概念。可以认为,表是一种动态分配的对象,程序只能操作指向表的引用(或指针)。除此之外, Lua 语言不会进行隐藏的拷贝或创建新的表。


我们使用构造器表达式创建表,其最简单的形式是: {}

> a = {}                  -- 创建一个表然后用表的引用赋值
> k = "x"
> a[k] = 10               -- 新元素,键是"x",值是10
> a[20] = "great"         -- 新元素,键是20,值是"great"
> a["x"]                  --> 10
> k = 20
> a[k]                    --> "great"
> a["x"] = a["x"] + 1     -- 增加元素"x"的值
> a["x"]                  --> 11


:::warning 注意 表永远是匿名的,表本身和保存表的变量之间没有固定的关系:

> a = {}
> a["x"] = 10
> b = a             -- 'b'和'a'引用同一张表
> b["x"]            --> 10
> b["x"] = 20
> a["x"]            --> 20
> a = nil           -- 只有'b'仍然指向表
> b = nil           -- 没有指向表的引用了


:::

对于一个表而言,当程序中不在有指向它的引用时,垃圾收集器会最终删除这个表并重用其占用的内存。

目录
相关文章
|
1月前
|
前端开发
`<table>`
【10月更文挑战第17天】
38 1
|
关系型数据库 MySQL 数据库
对于mysql数据库delect from,truncate table,drop table, update操作的时候如何选择
对于mysql数据库delect from,truncate table,drop table, update操作的时候如何选择
185 2
|
4月前
|
SQL Oracle 关系型数据库
CREATE TABLE 时的 SQL FOREIGN KEY 约束
【7月更文挑战第24天】CREATE TABLE 时的 SQL FOREIGN KEY 约束。
52 5
|
SQL 存储 关系型数据库
PostgreSQL 动态表复制(CREATE TABLE AS & CREATE TABLE LIKE)
PostgreSQL 动态表复制(CREATE TABLE AS & CREATE TABLE LIKE)
|
JavaScript 前端开发 数据可视化
vxe-table
vxe-table
742 0
vxe-table
瞬表——Ephemeron Table
瞬表——Ephemeron Table
161 0
Stones on the Table
Stones on the Table
129 0
Stones on the Table
|
Web App开发 前端开发 搜索推荐
关于table的一些记录
HTML有10个表格相关标签
关于table的一些记录
|
Java 关系型数据库 MySQL
添加和删除数据表(table)|学习笔记
快速学习添加和删除数据表(table)
164 0
|
SQL 索引
Can you create an index on a foreign table?(外部表可以创建索引吗?)
来自google搜索的一段回答 No, you will get an error: ERROR: cannot create index on foreign table "tablename" ********** Error ********** ERROR: cannot create...
1466 0