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           -- 没有指向表的引用了


:::

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

目录
相关文章
|
6月前
|
数据库 OceanBase
使用 `INSERT INTO table_name SELECT * FROM table_name` 这种方式
使用 `INSERT INTO table_name SELECT * FROM table_name` 这种方式
45 1
|
JavaScript 前端开发 数据可视化
vxe-table
vxe-table
585 0
vxe-table
瞬表——Ephemeron Table
瞬表——Ephemeron Table
112 0
Stones on the Table
Stones on the Table
68 0
Stones on the Table
|
关系型数据库 MySQL 数据库
MySQL创建数据库 easyShopping,包括area表、goods表、customer表、orders表、ordersdetall表、test表
MySQL创建数据库 easyShopping,包括area表、goods表、customer表、orders表、ordersdetall表、test表
838 0
MySQL创建数据库 easyShopping,包括area表、goods表、customer表、orders表、ordersdetall表、test表
|
Web App开发 前端开发 搜索推荐
关于table的一些记录
HTML有10个表格相关标签
关于table的一些记录
|
Java 关系型数据库 MySQL
添加和删除数据表(table)|学习笔记
快速学习添加和删除数据表(table)
141 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...
1425 0
|
关系型数据库 MySQL 索引
浅谈create table as 和 insert into select 复制表遇到的问题
之前做一次表压缩测试,在准备原表时需要数据量比较大的表,通过insert into select 的方式将几个表的数据复制到一个表,产生的一些问题~
3134 0
|
存储 关系型数据库 MySQL