Lua语言入门 - Lua 数组

Lua 数组

数组,就是相同数据类型的元素按一定顺序排列的集合,可以是一维数组和多维数组。

在 Lua 中,数组不是一种特定的数据类型,而是一种用来存储一组值的数据结构。

实际上,Lua 中并没有专门的数组类型,而是使用一种被称为 "table" 的数据结构来实现数组的功能。

Lua 数组的索引键值可以使用整数表示,数组的大小不是固定的。

在 Lua 索引值是以 1 为起始,但你也可以指定 0 开始。

一维数组

一维数组是最简单的数组,其逻辑结构是线性表。

使用索引访问数组元素:

local myArray = {10, 20, 30, 40, 50};
print("myArray[1]:", myArray[1]);
print("myArray[3]:", myArray[3]);
print("myArray[5]:", myArray[5]);

以上代码执行输出结果为:

要计算数组的长度(即数组中元素的个数),你可以使用 # 操作符:

local myArray = {10, 20, 30, 40, 50};local length = #myArrayprint("myArray length:", length);-- 计算数组长度

以上代码执行输出结果为:

一维数组可以用 for 循环出数组中的元素,如下实例: 

-- 创建一个数组
local myArray = {"I", "am", "a", "handsome", "programmer"};-- 循环遍历数组
for i = 1, #myArray doprint(i, myArray[i]);
end

以上代码执行输出结果为:

lua 索引默认从 1 开始:

-- 创建一个数组
local myArray = {"I", "am", "a", "handsome", "programmer"};-- 循环遍历数组
for i = 0, #myArray doprint(i, myArray[i]);
end

 以上代码执行输出结果为:

正如你所看到的,我们可以使用整数索引来访问数组元素,如果指定的索引没有值则返回 nil

除此外我们还可以以负数为数组索引值:


local array = {};for i = -3, 3 doarray[i] = i * 32;
endfor i = -3, 3 doprint(i, array[i])
end

 以上代码执行输出结果为:

我们也可以向数组中添加元素:

-- 创建一个数组
local myArray = {10, 20, 30, 40, 50};-- 添加新元素到数组末尾
myArray[#myArray + 1] = 60;-- 循环遍历数组
for index = 1, #myArray doprint(index, myArray[index]);
end

 以上代码执行输出结果为:

我们也可以删除数组中元素:

-- 创建一个数组
local myArray = {"I", "am", "a", "handsome", "programmer"};-- 循环遍历数组
for i = 1, #myArray doprint(i, myArray[i]);
endprint("--------------");-- 删除第三个元素
table.remove(myArray, 3)-- 循环遍历数组
for i = 1, #myArray doprint(i, myArray[i]);
end

以上代码执行输出结果为:

多维数组

多维数组即数组中包含数组或一维数组的索引键对应一个数组。

以下是一个三行三列乘法口诀表的阵列多维数组:

-- 初始化数组
local array = {};
for i = 1, 9 doarray[i] = {};for j = 1, 9 doarray[i][j] = i * jend
end-- 访问数组
for i = 1, 9 dofor j = 1 , i doio.write(string.format("%02d*%02d=%02d, ", i, j, array[i][j]));endprint(" ");
end

以上代码执行输出结果为:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/63395.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SVM的基本思想

一、SVM的基本思想 SVM的基本思想是在样本的向量空间中寻找一个超平面,使得两类样本被分割在平面的两端。这样的平面理论上有无穷多个,但SVM的目标是找到一个最优的超平面,即两侧距离超平面最近的样本点到超平面的距离被最大化的超平面。这个…

Java基于SpringBoot的网上订餐系统,附源码

博主介绍:✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&…

【 工具变量】IPCC碳排放因子数据测算表

一、数据简介: 排放因子法是IPCC提出的一种碳排放估算方法,也是目前适用范围最广、应用最为普遍的方法。将各类能源消耗的实物统计量转变为标准统计量,再乘以各自的碳排放因子,加总之后就可以得到碳排放总量。如果按照ISO14064标…

备忘录模式的理解和实践

引言 在软件开发中,我们经常会遇到需要保存对象状态并在某个时间点恢复到该状态的需求。这种需求类似于我们平时说的“后悔药”,即允许用户撤销之前的操作,恢复到某个之前的状态。备忘录模式(Memento Pattern)正是为了…

湖南铂乐家具新潮流,岛台不再是大平层的专属

湖南铂乐家具设计师们以巧思打破常规,无论是精致温馨的小户型公寓,还是布局紧凑的普通住宅,都能找到适配的岛台设计。以往岛台总是与宽敞开阔的大平层空间紧密相连,仿佛是大户型的身份象征。而如今岛台不再是大平层的专属。 在固…

RK3568笔记3:开发板启动流程

第1章 启动流程 1.1 上电复位 CPU 复位,进入启动模式。系统硬件查找启动设备(如 eMMC)。 1.2 ROM Code 阶段(硬件引导) 在片上 ROM 中存储的启动代码(BootROM)运行。ROM Code 从 eMMC 的 Boo…

重邮+数字信号处理实验三:z变换及离散LTI系统的z域分析

实验目的: ( 1 )学会运用 Matlab 求离散时间信号的有理函数 z 变换的部分分式展开; ( 2 )学会运用 Matlab 分析离散时间系统的系统函数的零极点; ( 3 )学会运用 …

dolphinScheduler 任务调度

#Using docker-compose to Start Server #下载:https://dlcdn.apache.org/dolphinscheduler/3.1.9/apache-dolphinscheduler-3.1.9-src.tar.gz $ DOLPHINSCHEDULER_VERSION3.1.9 $ tar -zxf apache-dolphinscheduler-"${DOLPHINSCHEDULER_VERSION}"-src.t…

node.js中跨域请求有几种实现方法

默认情况下&#xff0c;出于安全考虑&#xff0c;浏览器会实施同源策略&#xff0c;阻止网页向不同源的服务器发送请求或接收来自不同源的响应。 同源策略&#xff1a;协议、域名、端口三者必须保持一致 <!DOCTYPE html> <html lang"en"> <head>&l…

【机器学习】机器学习的基本分类-监督学习-决策树(Decision Tree)

决策树是一种树形结构的机器学习模型&#xff0c;适用于分类和回归任务。它通过一系列基于特征的条件判断来将数据分割为多个子区域&#xff0c;从而预测目标变量的值。 1. 决策树的结构 根节点&#xff08;Root Node&#xff09; 决策树的起点&#xff0c;包含所有样本。根据某…

支付宝租赁小程序助力便捷生活新方式

内容概要 支付宝租赁小程序为现代人带来了许多惊喜&#xff0c;它不仅仅是一个简单的租赁平台&#xff0c;更是生活中不可或缺的好帮手。想象一下&#xff0c;无论你缺少什么&#xff0c;从工具到家居用品&#xff0c;只需轻轻一点&#xff0c;便能轻松找到需要的物品。这个小…

搭建高可用负载均衡系统:Nginx 与云服务的最佳实践

搭建高可用负载均衡系统&#xff1a;Nginx 与云服务的最佳实践 引言 在项目开发过程中&#xff0c;我们通常在开发和测试阶段采用单机架构进行开发和测试。这是因为在这个阶段&#xff0c;系统的主要目的是功能实现和验证&#xff0c;单机架构足以满足开发人员的日常需求&…

2024年12月5日Github流行趋势

项目名称&#xff1a;HelloGitHub 项目维护者&#xff1a;521xueweihan, yaowenqiang, daixiang0等项目介绍&#xff1a;分享 GitHub 上有趣、入门级的开源项目。项目star数&#xff1a;95,244项目fork数&#xff1a;9,707 项目名称&#xff1a;Best-websites-a-programmer-sh…

乾元通渠道商中标福州市人防信息化建设项目

乾元通渠道商中标福州市人防信息化建设项目&#xff0c;乾元通作为应急通讯设备厂家&#xff0c;为项目提供车载版多链路聚合通信保障设备 QYT-X1s。 青岛乾元通数码科技有限公司作为国家应急产业企业&#xff0c;深耕于数据调度算法研究&#xff0c;参与了多项国家及省部级信息…

unity3d—demo(实现给出图集名字和图片名字生成对应的图片)

目录 实现给出图集名字和图片名字生成对应的图片&#xff1a; 代码示例&#xff1a; dic: 键 是图集名称 值是一个字典 该字典键是图片名称 值是图片&#xff0c;结构如图&#xff1a; 测试代码&#xff1a; 结果&#xff1a; SpriteRenderer 讲解&#xff1a; Resour…

小型商贸公司用什么进销存软件?

最近&#xff0c;一个商贸公司的客户在了解产品时&#xff0c;向我们倾诉了自己的烦恼&#xff1a;“因为公司规模比较小&#xff0c;所以没有使用专业的进销存软件来进行管理&#xff0c;平时记录数据什么的也是使用比较简单的Excel表格。但是&#xff0c;随着业务的扩大&…

学习SqlSugar调用达梦数据库的存储过程的基本用法

将之前学习达梦数据库递归用法的SQL语句封装为存储过程&#xff0c;然后使用SqlSugar在C#程序中调用。   打开达梦管理工具&#xff0c;在SCHOOL数据库的存储过程文件夹新建存储过程&#xff0c;这里需注意&#xff0c;存储过程名称及参数名称都需要大写&#xff0c;且参数名…

记录一次老平台改造通知用户刷新页面,纯前端实现

记录一次老平台改造通知用户刷新页面&#xff0c;纯前端实现 方案概述背景现状问题本质 方案设计前提设计实现 其他补充写在最后的话抛出一个问题 方案概述 背景 前端构建完上线&#xff0c;用户还停留还在老页面&#xff0c;用户不知道网页重新部署了&#xff0c;跳转页面的时…

【WRF理论第十三期】详细介绍 Registry 的作用、结构和内容

目录 1. Introduction&#xff1a;介绍 Registry 的作用和功能。2. Registry Contents&#xff1a;详细描述 Registry 的结构和内容&#xff0c;包括各个部分的条目类型。2.1. DIMSPEC ENTRIES&#xff08;维度规格条目&#xff09;2.2. STATE ENTRIES&#xff08;状态变量条目…

微信小程序提交测试版,但是扫描体验版的二维码 显示 页面不存在

检查路径首页是否和我们微信小程序中的首页路径一致。 显然我的不一致。 {"pagePath": "pages/index/index","text": "产品","iconPath": "icons/Group 450.png","selectedIconPath": "/icons/组 …