Lua table

news/2024/10/30 17:29:11/

Table(表)

table 是 lua 中唯一的数据结构,可以用于表示 数组字典结构体。它非常强大,可以储存任何数据类型。

table 的数据单元为一对键值。 table 是不固定大小的,你可以根据自己需要进行扩容。

构造方式

table = {} --空 tabletable = {1, 2, 3,}  -- arraytable = {["1"] = 1, ["2"] = 2, ["3"] = 3,} --diractorytable.x = 1 --strcut

构造方式有多种

  • 记录式(数组较为常见)
table = {1, 2, 3,}
  • 列表式
table = {x = 1, y = 2, z = 3,}
  • 通用形式(字典较为常见)
table = {["1"] = 1, ["2"] = 2, ["3"] = 3,}

由于在查询键的类型可以出现不同,如 number 与 string 之间的转换,需要注意。

同时 整型类型 与 浮点类型之间在table中是一致的,浮点型 2.0 等于 整型 2,不存在分歧问题,table会将整型浮点转为 number

遍历

table = {}
for i = 1, 1000 dotable[i] = i
end--遍历
for i = 1, #table doprint(table[i])
end

table 表示数组时,索引值从 1 开始,通过 # 来获得数组是大小,# 只能获得数组序列的大小,且序列中间不能为 nil

nil 意味移除该元素,所以当不需要此数据时,将其设为 nil,cg会将其收回。

print(table[#table]) --输出最后一个值
table[#table] = nil --移除最后一个元素
table[#table + 1] = value --在末尾添加元素

for 遍历 table 的两种方式

  • ipairs 迭代器 - 主要用于数组的迭代
  • pairs 迭代器 - 主要用于字典的迭代
t = {1, 2, 3,}
--[[i 为索引v 为值
]]
for i, v in ipairs(t) doprint(t[i])
end
--[[k 为键 v 为值
]]
for k, v in pairs(t) doprint(k .. " " .. v)
end

table函数

方法用途
table.concat(table, [, sep, [, start [, end]]])concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep)隔开。
table.insert (table, [pos,] value):在table的数组部分指定位置(pos)插入值为value的一个元素. pos参数可选, 默认为数组部分末尾.
table.remove (table [, pos])返回table数组部分位于pos位置的元素. 其后的元素会被前移. pos参数可选, 默认为table长度, 即从最后一个元素删起。
table.sort (table [, comp])对给定的table进行升序排序。

http://www.ppmy.cn/news/26886.html

相关文章

istio初步了解

istio 控制平面: Pilot:管理和配置部署在特定istio服务网格中的所有sidecar代理实例,管理sidecar代理之间的路由流量规则,并配置故障恢复功能,如超时、重试、熔断。 Citadel:istio中负责身份认证和证书管…

Netty核心原理(线程模型、核心API)与入门案例详解

Netty核心原理(线程模型、核心API)与入门案例详解 文章目录Netty核心原理(线程模型、核心API)与入门案例详解Netty 介绍原生 NIO 存在的问题概述线程模型线程模型基本介绍传统阻塞 I/O 服务模型Reactor 模型单 Reactor 单线程Nett…

Shiro框架详解

1.Shiro简介 1.1.基本功能点 Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在 JavaSE 环境,也可以用在 JavaEE 环境。Shiro 可以帮助我们完成:认证、授权、加密、会话管理、与 Web 集成、缓存等。 Authentication:身份…

数据库必知必会:TiDB(11)TiDB集群安装

数据库必知必会:TiDB(11)TiDB集群安装TiDB集群安装单机环境上安装集群下载并安装TiUP工具安装TiUP cluster组件创建拓扑文件配置SSH免密登录检查安装要求创建安装目录部署集群启动集群验证集群启动使用命令验证通过Dashboard查看通过Grafana查…

2023只会“点点点”,被裁只是时间问题,高薪的自动化测试需要掌握那些技能?

互联网已然是存量市场了,对人员规模的需求正在放缓。在存量市场里,冗余人员和低效人员会被淘汰、被外包。而优秀的人才也会一直受到招聘方的青睐。所以我们就看到了近期行业里冰火两重天的一幕,一边是大量的低端测试工程师被淘汰、求职屡屡碰…

C++的完美讲解,还不快来看看?

目录 简介: 创建C程序: Windows编译简介: Hello,C World! 简介: C融合了3中不同的编程传统:C语言代表的过程性传统、C在C语言基础上添加的类代表的面向对象语言的传统以及C模板支持的通用编程传统。一般来说,计算机语言…

人工智能基础部分13-LSTM网络:预测上证指数走势

大家好,我是微学AI,今天给大家介绍一下LSTM网络,主要运用于解决序列问题。 一、LSTM网络简单介绍 LSTM又称为:长短期记忆网络,它是一种特殊的 RNN。LSTM网络主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题…

Linux信号-进程退出状态码

当进程因收到信号被终止执行退出后,父进程可以通过wait或waitpid得到它的exit code。进程被各信号终止的退出状态码总结如下:信号编号信号名称信号描述默认处理方式Exit code1SIGHUP挂起终止12SIGINT终端中断终止23SIGQUIT终端退出终止、coredump1314SIG…