当前位置: 首页 > news >正文

lua中的循环 while、for、repeat until三种循环方式、pairs和ipairs区别

lua中的循环 while、for、repeat until三种循环方式、pairs和ipairs区别

  • 介绍
  • for循环
    • 参数
    • ipairs和pairs
  • while
  • repeat until
  • 总结

介绍

这里我用while、for、repeat until分别输出1-20之间的奇数 ,具体的语法可以看下面的代码

for循环

参数

定义一个初始值为startValue的i,并且i每次改变值是changeValue,直到i的值变为EndValue时执行完当次结束
如果for循环没有changeValue时,则默认changeValue为1,可以不写

--不隐藏changeValue
for i = startValue, EndValue, changeValue doend--隐藏changeValue
for i = startValue, EndValue doend

例子如下:

for i = 1, 20 ,1 doif(i%2 == 1) thenlogError("i ============> "..i.."为奇数")end
endfor i = 1, 20 doif(i%2 == 1) thenlogError("i ============> "..i.."为奇数")end
end

打印如下:
在这里插入图片描述

ipairs和pairs

ipairs和pairs都是遍历表中数据,这两个的区别主要是pairs可以识别多种类型的键值对,但是ipairs只能识别数字为键的数据表。

下面是两种方式的打印,这里我们打印纯数字表、纯字符串表、纯boolean表以及多数据类型的表以及多类型key、value的表

打印纯数字表

--测试表格1
local tabTest1 = {1,2,3,4,5}--测试表格2
local tabTest2 = {1,2,"a",3,true}--测试表格3
local tabTest3 = {"1str","2str","3str","4str","5str"}--测试表格4
local tabTest4 = {true,false,true,false,false}--测试表格5
local tabTest5 = {[1] = 10,["a"] = "str",[true] = false,[2] = "asd",
}for k,v in pairs(tabTest1) dologError("k=> "..tostring(k)..", v=> "..tostring(v))
endfor k,v in ipairs(tabTest1) dologError("k=> "..tostring(k)..", v=> "..tostring(v))
end

在这里插入图片描述
打印纯字符串类型的方式

--测试表格1
local tabTest1 = {1,2,3,4,5}--测试表格2
local tabTest2 = {1,2,"a",3,true}--测试表格3
local tabTest3 = {"1str","2str","3str","4str","5str"}--测试表格4
local tabTest4 = {true,false,true,false,false}--测试表格5
local tabTest5 = {[1] = 10,["a"] = "str",[true] = false,[2] = "asd",
}for k,v in pairs(tabTest1) dologError("k=> "..tostring(k)..", v=> "..tostring(v))
endfor k,v in ipairs(tabTest1) dologError("k=> "..tostring(k)..", v=> "..tostring(v))
end

在这里插入图片描述
打印纯boolean表数据

--测试表格1
local tabTest1 = {1,2,3,4,5}--测试表格2
local tabTest2 = {1,2,"a",3,true}--测试表格3
local tabTest3 = {"1str","2str","3str","4str","5str"}--测试表格4
local tabTest4 = {true,false,true,false,false}--测试表格5
local tabTest5 = {[1] = 10,["a"] = "str",[true] = false,[2] = "asd",
}for k,v in pairs(tabTest4) dologError("k=> "..tostring(k)..", v=> "..tostring(v))
endfor k,v in ipairs(tabTest4) dologError("k=> "..tostring(k)..", v=> "..tostring(v))
end

在这里插入图片描述

打印多类型值的表

--测试表格1
local tabTest1 = {1,2,3,4,5}--测试表格2
local tabTest2 = {1,2,"a",3,true}--测试表格3
local tabTest3 = {"1str","2str","3str","4str","5str"}--测试表格4
local tabTest4 = {true,false,true,false,false}--测试表格5
local tabTest5 = {[1] = 10,["a"] = "str",[true] = false,[2] = "asd",
}for k,v in pairs(tabTest2) dologError("k=> "..tostring(k)..", v=> "..tostring(v))
endfor k,v in ipairs(tabTest2) dologError("k=> "..tostring(k)..", v=> "..tostring(v))
end

在这里插入图片描述
打印多类型键值对的表

--测试表格1
local tabTest1 = {1,2,3,4,5}--测试表格2
local tabTest2 = {1,2,"a",3,true}--测试表格3
local tabTest3 = {"1str","2str","3str","4str","5str"}--测试表格4
local tabTest4 = {true,false,true,false,false}--测试表格5
local tabTest5 = {[1] = 10,["a"] = "str",[true] = false,[2] = "asd",
}for k,v in pairs(tabTest5) dologError("k=> "..tostring(k)..", v=> "..tostring(v))
endfor k,v in ipairs(tabTest5) dologError("k=> "..tostring(k)..", v=> "..tostring(v))
end

在这里插入图片描述

while

while就是根据后面的条件判定是否执行while内部的方法代码,condition 为判定条件,判定成功则走完这一边之后不在继续执行。

--while condition do
--	  statements
--endlocal a = 1
while(a <= 20) do if(a%2 == 1) thenlogError("奇数=============>"..a)enda = a + 1
end

在这里插入图片描述

repeat until

repeat until判定条件在后置,所以当满足条件时不执行上述循环体代码

--repeat
--	  循环体
--until(condition)local a = 1
repeat if(a%2 == 1) thenlogError("奇数=============>"..a)enda = a + 1
until(a > 20)

在这里插入图片描述

总结

while和for就是可以理解成前置条件语句,满足时执行完毕后不在继续执行。
repeat until理解为后置语句所以当满足条件时不执行。

相关文章:

lua中的循环 while、for、repeat until三种循环方式、pairs和ipairs区别

lua中的循环 while、for、repeat until三种循环方式、pairs和ipairs区别 介绍for循环参数ipairs和pairs whilerepeat until总结 介绍 这里我用while、for、repeat until分别输出1-20之间的奇数 &#xff0c;具体的语法可以看下面的代码 for循环 参数 定义一个初始值为start…...

Linux 进程的管道通信

文章目录 无名管道pipe有名管道 进程之间的通信&#xff1a;Linux环境下&#xff0c;进程地址空间相互独立&#xff0c;每个进程各自有不同的用户地址空间。任何一个进程的全局变量在另外一个进程中都看不到&#xff0c;所以进程之间不能相互访问&#xff0c;要交换数据必须通过…...

OpenGL和Vulkan比较

​ 比较 见参考 参考 Reference GuidesCopyright 2022-2023 The Khronos Group Inc. :: Vulkan Documentation ProjectDifference Between OpenGL vs VulkanVulkan与OpenGL对比——Vulkan的全新渲染架构 图形程序接口&#xff1a;OpenGL、OpenCL、Vulkan、OpenGL ES、WebGL…...

OpenCV入门3:像素操作

在OpenCV中&#xff0c;图像的像素值是以一个多维数组的形式表示的。上一篇已经介绍了cv::Mat类。对于图像中的每一个像素&#xff0c;可以通过Mat对象中的at<type>(i,j)函数&#xff08;type可以是uchar、int等&#xff09;获得Mat对象的像素值。 访问像素值&#xff1…...

使用内网穿透工具,远程测试本地接口

学习目标&#xff1a; 目标 含义&#xff1a; 内网穿透工具是一种能够帮助没有公网IP或者动态IP用户进行远程访问内网应用的工具。通过内网穿透&#xff0c;用户无论身处任何网络环境&#xff0c;都可以方便地访问企业内部的ERP、OA、CRM等应用。内网穿透工具还支持默认的Htt…...

uniapp小程序才到第五层就报错navigateto:fail webview count limit exceed

错误截图 原因 小程序官方描述是说可以跳转10层&#xff0c;但是使用uniapp开发的程序在小程序中才运行到第五层就报错了&#xff0c;原因是因为没有设置appId。如果设置了就正常了。...

【C++】map set

map & set 一、关联式容器二、键值对三、树形结构的关联式容器1. set&#xff08;1&#xff09;set 的介绍&#xff08;2&#xff09;set 的使用 2. multiset3. map&#xff08;1&#xff09;map 的介绍&#xff08;2&#xff09;map 的使用 4. multimap 四、map 和 set 的…...

正点原子嵌入式linux驱动开发——Linux Regmap驱动

在前面学习I2C和SPI驱动的时候&#xff0c;针对I2C和SPI设备寄存器的操作都是通过相关的API函数进行操作的。这样Linux内核中就会充斥着大量的重复、冗余代码&#xff0c;但是这些本质上都是对寄存器的操作&#xff0c;所以为了方便内核开发人员统一访问I2C/SPI设备的时候&…...

京东商品详情API,页面信息采集,优惠券信息获取

京东开放平台提供了API接口来访问京东商品详情。通过这个接口&#xff0c;您可以获取到商品的详细信息&#xff0c;如商品名称、价格、库存量、描述等。额外还附加一个优惠券信息接口。代码如下: 京东获得JD商品详情 API 优惠券接口 公共参数 名称类型必须描述keyString是调…...

Visual Studio 2022 + OpenCV 4.5.2 安装与配置教程

目录 OpenCV的下载与配置Visual Studio 2022的配置新建工程新建文件新建项目属性表环境配置测试先写一个输出将OpenCV的动态链接库添加到项目的 x64 | Debug下测试配置效果 Other OpenCV的下载与配置 参考这个OpenCV的下载与环境变量的配置&#xff1a; Windows10CLionOpenCV4…...

docker 安装 mysql (单体架构)

文章归档&#xff1a;https://www.yuque.com/u27599042/coding_star/nckzqa73g47hgz3x 查询 MySQL 镜像 docker search mysql拉取 MySQL 镜像 docker pull mysql在宿主机创建映射目录 mkdir -p \ /home/docker/mysql/log \ /home/docker/mysql/data \ /home/docker/mysql/co…...

城市内涝怎么预警?万宾科技内涝积水监测仪

在城市运行过程中&#xff0c;城市内涝问题频繁出现&#xff0c;影响城市管理水平的提升&#xff0c;也会进一步减缓城市基础设施建设。尤其近几年来&#xff0c;城市内涝灾害频繁出现&#xff0c;在沿海地区内涝所带来的安全隐患成为城市应急管理部门的心头大患。城市内涝的背…...

Spring基础(2):放弃XML,走向注解

上一篇并没有实际地带大家去看源码&#xff0c;而是介绍了两个概念&#xff1a; BeanDefinitionBeanPostProcessor 当然&#xff0c;我介绍得非常笼统&#xff0c;不论是BeanDefinition还是BeanPostProcessor其实都有着较为复杂的继承体系&#xff0c;种类也很多。作为Spring…...

【线性代数】分块矩阵总结

...

Redis-命令操作Redis->redis简介,redis的安装(Linux版本windows版本),redis的命令

redis简介redis的安装&#xff08;Linux版本&windows版本&#xff09;redis的命令 1.redis简介 Redis是一个开源&#xff08;BSD许可&#xff09;&#xff0c;内存存储的数据结构服务器&#xff0c;可用作数据库&#xff0c;高速缓存和消息队列代理。 它支持字符串、哈…...

17、Python虚拟环境:为何要用虚拟环境、如何使用virtualenv

文章目录 在Python开发中,虚拟环境是一个独立的目录树,可以在其中安装Python模块。每个虚拟环境都有自己的Python二进制文件和一组安装的库。使用虚拟环境的主要原因是为了避免项目间的依赖冲突,允许每个项目有其特定的依赖,而不影响全局安装的模块。 为何要用虚拟环境 依…...

elasticSearch 接口实现查询热词统计

前面讲过使用elasticsearch可视化工具可以直接写语法查询如下: GET robot-demand/_search { "size":10, //查询多少条数据 "aggs":{ "hot_words":{ "terms":{ "field": "title" } }…...

10年测试经验分享:新手如何找到适合自己的软件测试项目?

每一个测试新手&#xff08;特别是自学测试的人&#xff09;来说&#xff0c;往往不知道到哪里去找项目练手&#xff0c;这应该是最大的困扰了。 实话讲&#xff0c;这个目前没有非常好的、直接的解决办法&#xff0c;不过在这我可以结合我自己之前的一些工作经历&#xff0c;…...

【MySQL】查询语句

文章目录 选择语句 / 子句比较运算符AND&#xff0c;OR&#xff0c;NOT运算符IN运算符BETWEEN运算符LIKE运算符REGEXP运算符 选择语句 / 子句 USE&#xff1a;选择使用的databaseSELECT&#xff1a;选择查询的列FROM&#xff1a;选择查询的表WHERE&#xff1a;条件查询ORDER B…...

金蝶云星空的网络控制设置

文章目录 金蝶云星空的网络控制设置说明网控参数加入网络控制清除网络控制清除网络控制&#xff08;单个&#xff09;清除网络控制&#xff08;批量&#xff09;清除网络控制&#xff08;批量&#xff0c;参数是拼接好的业务对象&#xff09; 金蝶云星空的网络控制设置 说明 …...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...

MyBatis中关于缓存的理解

MyBatis缓存 MyBatis系统当中默认定义两级缓存&#xff1a;一级缓存、二级缓存 默认情况下&#xff0c;只有一级缓存开启&#xff08;sqlSession级别的缓存&#xff09;二级缓存需要手动开启配置&#xff0c;需要局域namespace级别的缓存 一级缓存&#xff08;本地缓存&#…...

【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权

摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题&#xff1a;安全。文章将详细阐述认证&#xff08;Authentication) 与授权&#xff08;Authorization的核心概念&#xff0c;对比传统 Session-Cookie 与现代 JWT&#xff08;JS…...

Monorepo架构: Nx Cloud 扩展能力与缓存加速

借助 Nx Cloud 实现项目协同与加速构建 1 &#xff09; 缓存工作原理分析 在了解了本地缓存和远程缓存之后&#xff0c;我们来探究缓存是如何工作的。以计算文件的哈希串为例&#xff0c;若后续运行任务时文件哈希串未变&#xff0c;系统会直接使用对应的输出和制品文件。 2 …...

数据库——redis

一、Redis 介绍 1. 概述 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的、高性能的内存键值数据库系统&#xff0c;具有以下核心特点&#xff1a; 内存存储架构&#xff1a;数据主要存储在内存中&#xff0c;提供微秒级的读写响应 多数据结构支持&…...

如何通过git命令查看项目连接的仓库地址?

要通过 Git 命令查看项目连接的仓库地址&#xff0c;您可以使用以下几种方法&#xff1a; 1. 查看所有远程仓库地址 使用 git remote -v 命令&#xff0c;它会显示项目中配置的所有远程仓库及其对应的 URL&#xff1a; git remote -v输出示例&#xff1a; origin https://…...