lua | 数组与迭代器的使用
目录
一、数组
一维数组
多维数组
二、迭代器
泛型for迭代器
无状态的迭代器
多状态的迭代器
本文章为笔者学习分享
学习网站:Lua 基本语法 | 菜鸟教程
一、数组
数组:相同数据类型的元素按一定顺序排列的集合,可以是一维数组和多维数组
使用:数组的索引键值可以使用整数表示,数组的大小不固定
一维数组
其逻辑结构是线性表
使用:一维数组可以用for循环出数组中的元素
for i=0,2 doprint(arr[i])
end
--从0循环到2,依次打印arr[]内的元素
--但是注意arr[0]=nil,因为在lua中的索引下标是从1开始的--实例,打印对数组元素
arr={}
for i=-2,2 doarr[i]=i*2
endfor i=-2,2 do --可以以负数为数组索引值printf(arr[i])
end
--[[打印结果
-4、-2
0
2
4
--]]
多维数组
多维数组:数组中包含数组或一维数组的索引键对应一个数组。
访问:
--初始化数组
arr={}
for i=1,3 doarr[i]={}for j=1,r dparr[i][j]=i*j;end
end--访问数组
for i=1,3 dofor j=1,3 doprint(arr[i][j])end
end
--[[打印结果
1
2
3
2
4
6
3
6
9
--]]-- 不同索引键的三行三列阵列多维数组
--初始化数组
arr[]={}
maxRow=3
maxColumn=3
for row=1,maxRow dofor col=1,maxColumn doarr[row*maxColumn+col]=row*colend
end
--访问数组
for row=1,maxRow dofor col=1,maxColumn doprint(arr[row*maxColumn+col])end
end
--[[打印结果
1
2
3
2
4
6
3
6
9
--]]
二、迭代器
迭代器:是一种对象。能够用来遍历标准库容容器中的部分或全部元素,每个迭代器独享代表容器中的确定的地址。
泛型for迭代器
泛型for在自己内部保存迭代器函数,实际上保存三个值:迭代器函数、状态常量、控制变量
泛型for迭代器提供了集合key/value对
for k,v in ipairs(t) do --k,v变量列表; ipairs(t)表达式列表,ipairs是LUA默认提供的迭代函数print(k, v)
end--实现数组n的平方
function square(...)
...
end --具体的实现省略for i,n in square,3,0
do print(i,n)
end
--[[打印结果为:
1 1
2 4
3 9
--]]
for的执行过程
- 初始化,计算in后面表达式的值,表达式应该返回泛型for需要的三个值:迭代函数、状态常量、控制变量;与多值赋值一样,如果表达式返回的结果个数不足三个,会自动用nil补足,多出部分会被忽略
- 将状态常量和控制变量作为参数调用迭代函数
- 将迭代函数返回的值赋给常量列表
- 如果返回的第一个值为nil,循环结束,否则循环继续
- 回到第二部再次调用迭代函数
lua的迭代器包含以下两种类型:
- 无状态的迭代器
- 多状态的迭代器
无状态的迭代器
含义:不包含任何状态的迭代器
好处:在循环中我们可以利用无状态迭代器避免创建闭包花费额外代价
--实现数组n的平方
function square(iteratorMaxCount,currentNumber)if currentNumber < iteratorMaxCountthenreturn currentNumber,currentNumber*currentNumberendend for i,n in square,3,0
do print(i,n)
end
--[[打印结果为:
1 1
2 4
3 9
--]]
多状态的迭代器
当迭代器需要保存多个状态信息,而不是简单的状态常量和控制变量,最简单的方法是使用闭包,还有一种方法是将所有的状态信息封装到table内,将table作为迭代器的状态常量,因为这种情况下可以将所有的信息存放在table内,所以迭代器通常不需要第二个参数。
相关文章:
lua | 数组与迭代器的使用
目录 一、数组 一维数组 多维数组 二、迭代器 泛型for迭代器 无状态的迭代器 多状态的迭代器 本文章为笔者学习分享 学习网站:Lua 基本语法 | 菜鸟教程 一、数组 数组:相同数据类型的元素按一定顺序排列的集合,可以是一维数组和多维数…...
【云原生】云原生服务网格流量控制思考
文章目录 前言一、什么是流量控制?二、存在三种场景三、场景分析 前言 随着云原生技术的不断发展及应用,很多服务都已部署上云。 保障云上环境的稳定是重要的一环。 一个重要的影响稳定的场景就是突发大流量冲击。 面对该场景,较好的应对…...
《数据库的嵌套查询和统计查询》
选择Study数据库,用SQL语句进行以下查询操作。 1.嵌套查询 ①求选修了数据结构的学生学号和成绩。 SELECT Sno, grade FROM sc WHERE Cno 007;②求007课程的成绩高于于文轩的学生学号和成绩。 SELECT Sno, grade FROM sc WHERE Cno 007 AND grade …...
【网站架构】Nginx 4层、7层代理配置,正向代理、反向代理详解
大家好,欢迎来到停止重构的频道。 本期我们讨论网络代理。 在往期《大型网站 安全性》介绍过,出于网络安全的考虑,一般大型网站都需要做网络区域隔离,以防止攻击者直接操控服务器。 网站系统的应用及数据库都会放在这个网络安全…...
mysql备份和恢复
mysql备份和恢复 数据丢失的原因: 程序错误 人为操作错误 运算错误 磁盘故障 灾难(火灾,地震)和盗窃 数据库备份分类 物理备份 数据库此操作系统的物理文件(数据文件,日志文件等)的备份 …...
新闻月刊 | GBASE 4月市场动态一览
产品动态 4月,GBASE南大通用大规模分布式并行数据库GBase 8a MPP Cluster中标人保财险“2022年基础软件产品及服务采购”项目。这是自2019年GBASE与人保财险达成合作以来支持建设的第三期项目。项目上线后,将极大满足人保财险大数据中心及研发中心的增量…...
Java --- springboot2数据响应与内容协商
目录 一、数据响应与内容协商 1.1、响应json 1.1.1、返回值解析器 1.1.2、springMVC支持的返回值类型 1.1.3、HttpMessageConverter原理 1.2、内容协商 1.2.1、引入依赖 1.2.2、 postman分别测试返回json和xml 1.2.3、开启浏览器参数方式内容协商功能 1.3、自定义 Message…...
“中特估”乘风破浪!后续机遇在哪?
5月第一个交易日,“中特估”继续乘风破浪,A股银行板块集体大涨。 随着新一轮国企改革正在推进,中特估体系也在积极构建之中。在市场缺乏增量资金背景下,市场选股范式已经转向数字经济AI、央国企价值重估的两条主线,此…...
OpenShift 4 - 在 CI/CD Pipeline 中创建 KubeVirt 容器虚拟机 - 方法3
《OpenShift / RHEL / DevSecOps 汇总目录》 说明:本文已经在支持 OpenShift 4.12 的 OpenShift 环境中验证 文章目录 创建并运行 CI/CD Pipeline访问 VMPipeline 的 Task 解读 创建并运行 CI/CD Pipeline 执行命令,生成公钥-私钥对。 $ ssh-keygen$ l…...
功率放大器在Lamb波信号波包模型验证研究中的应用
实验名称:窄带激励条件下的兰姆波时域信号参数估计研究 研究方向:Lamb波 测试目的: 基于Lamb波的二阶频散理论,提出了时域信号的波包模型,为全文奠定理论基础。模型考虑两种情况:初始激励以单模态传播和…...
Apache Hadoop
一、Apache Hadoop入门 1.1、Hadoop介绍 狭义上:hadoop指的是Apache一款java开源软件,是一个大数据分析处理平台。 Hadoop HDFS:分布式文件系统。 解决了海量数据存储问题。 Hadoop Distributed File System (HDFS™)Hadoop MapReduce&…...
PHP+vue大学生心理健康评价和分析系统8w3ff
本整个大学生心理健康管理系统是按照整体需求来实现各个功能的,它可以通过心理健康测评来检测大学生的心理健康,并且给予预警,还可以预约医生来解决问题。并且,管理员可以查看用户信息,发布一些关于心理健康的文章。该…...
【图像分割】【深度学习】SAM官方Pytorch代码-Mask decoder模块MaskDeco网络解析
【图像分割】【深度学习】SAM官方Pytorch代码-Mask decoder模块MaskDeco网络解析 Segment Anything:建立了迄今为止最大的分割数据集,在1100万张图像上有超过1亿个掩码,模型的设计和训练是灵活的,其重要的特点是Zero-shot(零样本迁…...
A Restful API
SpringBoot 定义Restful API 定义POJOOrderBuyer 定义RestfulControllerGet API for queryPost API for addPut API for updateDelete API for delete 定义AjaxResponse Patavariable RequestParm RequestBodyRequestHeader 定义POJO Order import java.util.Date; import ja…...
从零开始学习JSP,让你全面掌握Web开发技能
JSP(Java Server Pages),是一种动态网页技术,它允许开发者使用Java代码和HTML标签来创建网页。在这篇文章中,我们将详细介绍JSP的基本概念、语法和应用。 一、JSP的基本概念 1.1 JSP的含义 JSP是一种网页技术&#…...
java基于知识库的中医药问询系统
本系统主要包含了等系统用户管理、中医药常识管理、科室信息管理、知识库管理多个功能模块。下面分别简单阐述一下这几个功能模块需求。 管理员的登录模块:管理员登录系统对本系统其他管理模块进行管理。 用户的登录模块:用户登录本系统,对个…...
【新星计划-2023】什么是ARP?详解它的“解析过程”与“ARP表”。
一、什么是ARP ARP(地址解析协议)英文全称“Address Resolution Protocol”,是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确…...
自动驾驶行业观察之2023上海车展-----车企发展趋势(2)
自主品牌发展 比亚迪:展示3款新车,均于2023年年内上市 比亚迪在本次展会上推出了3款新车:宋L概念车(王朝系列)、驱逐舰07(海洋系列)、海鸥(海洋系列)。 • 宋L&#x…...
通知所有员工所需的时间
题目描述 公司里有 n 名员工,每个员工的 ID 都是独一无二的,编号从 0 到 n - 1。公司的总负责人通过 headID 进行标识。 在 manager 数组中,每个员工都有一个直属负责人,其中 manager[i] 是第 i 名员工的直属负责人。对于总负责…...
Docker:bash: vim: command not found
进入docker容器 docker exec -it [容器ID] /bin/bash docker exec -it e56e7bbe85ad /bin/bash 在使用 Docker 容器时,有时候里边没有安装vim,敲vim命令时提示说:vim: command not found,这个时候就需要安装vim,可是…...
排序算法之选择排序
选择排序(Selection Sort)是一种简单直观的排序算法,其基本思路是在未排序的数据序列中找到最小元素,将其放在已排序的数据序列的末尾。重复该过程,直到整个序列排序完成。 具体实现过程如下: 首先&#x…...
5_服务编排_docker-compose
服务编排之Docker Compose 微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,维护的工作量会很大。 要从Dockerfile build image 或者去dockerhub拉取image 要创建多个container 要…...
Java基本数据类型以及包装类型的常量池技术
Java 中的基本数据类型 Java 中有 8 种基本数据类型,分别为: 6 种数字类型: 4 种整数型:byte、short、int、long2 种浮点型:float、double 1 种字符类型:char1 种布尔型:boolean。 这 8 种基本…...
P1054 [NOIP2005 提高组] 等价表达式
题目描述 明明进了中学之后,学到了代数表达式。有一天,他碰到一个很麻烦的选择题。这个题目的题干中首先给出了一个代数表达式,然后列出了若干选项,每个选项也是一个代数表达式,题目的要求是判断选项中哪些代数表达式…...
什么牌子蓝牙耳机好用不贵?国产性价比高的蓝牙耳机推荐
相较于有线耳机,无线蓝牙耳机更便携、功能更丰富,不用受到耳机孔与线的限制。那么,什么牌子的蓝牙耳机好用不贵?针对这个问题,我给大家推荐几款国产性价比高的蓝牙耳机,可以当个参考。 一、南卡小音舱Lite…...
明明花钱上了ERP,为什么还要我装个MES系统
目前, ERP系统依旧是很多制造企业的选择。据统计,ERP系统的应用已经达到70%以上,但是在车间的应用, MES系统的应用比例并不高。那么,为什么现在很多企业又都选择再上个MES呢? MES系统是一个面向…...
JAVA中的集合框架有哪些?
在Java中,集合(Collection)是一组对象的容器,而集合框架(Collection Framework)是一组接口、实现类和算法,用于存储和操作集合。Java集合框架提供了一组通用的、高性能的、可扩展的接口和类&…...
用Jmeter进行接口自动化测试的工作流程你知道吗?
目录 测试流程 接口测试相关文档管理规范 接口测试要点 测试流程 在测试负责人接受到测试任务后,应该按照以下流程规范完成测试工作。 2.1 测试需求分析 产品开发负责人在完成某产品功能的接口文档编写后,在核对无误后下发给对应的接口测试负责人…...
Java 中的设计模式有哪些?(十九)
Java设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。 设计模式可以帮助我们解决软件开发过程中面临的一般问题,提高代码的可读性、可复用性和可扩展性。 Java中一般认为有23种设计模式,总体来说设计模式分为三大类&…...
奇数单增序列
题目描述 给定一个长度为 N(不大于 500)的正整数序列,请将其中的所有奇数取出,并按升序输出。 输入格式 第 1 行为 N;第 2 行为 N 个正整数,其间用空格间隔。 输出格式 增序输出的奇数序列,…...
上海网站建设明细表/廊坊关键词优化报价
前几天在一个大神群里提到ajax优化选项卡功能的方法上,有位低调的大神默默得打出:了解一下pjax,好奇心的驱使下,我具体查了一下pjax,不一般啊,ax结合pushState和ajax技术, 不需要重新加载整个页面就能从服务器加载Html到你当前页面,这个ajax请求会有永久…...
吉林网站建站系统哪家好/怎么做百度推广
互信息(Mutual Information)的介绍...
惠阳有做公司网站的吗/青岛网站seo公司
(一) 拦截器配置 对于Web应用而言,URL就表示资源,URL就表示一个操作,Spring MVC也正是对URL的匹配进行相关操作,但是有些时候WEBUI的js、图片以及HTML等静态资源对应的URL不是一种操作,而仅仅是…...
白云区网站建设/网络营销论文
摘 要 在农业生产活动中,温度和湿度是影响农作物生长的重要因素。因此,对农作物生长的温湿度监测显得尤为重要。随着互联网技术的飞速发展,“互联网农业”已成为促进农业规模化生产的新动力,采用“互联网农业”的生产模式能有效的…...
重庆活动轨迹公布/权威seo技术
前言可能很多小伙伴们都知道,在一般互联企业初期大多数都是采用手工打包上传与发布的方式进行代码发布,常见就是利用打包工具手工打包,上传到WEB服务器,备份原代码文件,发布新的代码,重启服务和检测是否发布…...
南宁美容网站建设/北京seo做排名
目录 1.Spring家族 2.IOC 2.1IOC原理 DI 依赖注入(DI)的方式: IOC的优势 IOC运行流程 SpringIOC支持的功能 2.2SpringIOC的应用 2.2.1BeanDefinitionRegistry 2.2.2BeanFactory 2.2.3ApplicationContext 2.2.4Bean是如何装载在s…...