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理解为后置语句所以当满足条件时不执行。

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

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

相关文章

网络基础篇【网线的制作,OSI七层模型,集线器和交换机的介绍,路由器的介绍与设置】

目录 一、网线制作 1.1 工具介绍 1.1.1网线 1.1.2 网线钳 1.1.3 水晶头 1.1.4 网线测试仪 二、OSI七层模型 2.1 简介 2.2 OSI模型层次介绍 2.2.1 结构图 2.2.2 数据传输过程 2.3 相关网站 二、集线器 2.1 介绍 2.2 适用场景 三、交换机 3.1 介绍 3.2 适用场景…

Torch 加速

loss.item() 1. 费时 loss.backward() loss_item loss.item() # todo loss.item() 这个比较费时间 0.2743 秒 2. 省时 loss_item loss.item() #todo 把它 移到 loss.backward() 前面&#xff0c;这个操作只需要 0.00027 秒 loss.backward() Index d_inv[torch.isin…

重学设计模式-Iterator(迭代器模式)

Iterator迭代器模式 介绍&#xff1a; 迭代器模式是一种行为型设计模式&#xff0c;它允许你在不暴露集合底层表示&#xff08;并不知道集合底层使用何种方式对数据尽心存储&#xff09;的情况下遍历集合中的元素。 这种模式提供了一种方法&#xff0c;可以顺序访问一个聚合…

Vue 3 新特性解锁: Fragment 的强大用途

&#x1f9d9;‍♂️ 诸位好&#xff0c;吾乃诸葛妙计&#xff0c;编程界之翘楚&#xff0c;代码之大师。算法如流水&#xff0c;逻辑如棋局。 &#x1f4dc; 吾之笔记&#xff0c;内含诸般技术之秘诀。吾欲以此笔记&#xff0c;传授编程之道&#xff0c;助汝解决技术难题。 &a…

Linux基础 - Linux ARM 原子读写

背景 在Linux Arm kernel实现原子读写64位数据&#xff1b; 接口代码 #include <linux/atomic.h> atomic64_t my_atomic_var ATOMIC64_INIT(0);void atomic_write_64(atomic64_t *v, int64_t new_value) {atomic64_set(v, new_value); }int64_t atomic_read_64(atomi…

创酷rs2022车机安装app

创酷rs2022车机安装app 前置条件操作步骤向车机推送app 创酷rs2022车机安装app&#xff0c;创酷rs2022车机进入工程模式&#xff0c;创酷rs2022车机开启adb。 前置条件 小雪OS升级到1.2版本。 操作步骤 屏幕进入主界面 依顺序点击 左上右上右下左下 输入密码1到8输入3遍&am…

hash 密码校验

import bcryptdef hash_password(password):# 生成一个新的saltsalt bcrypt.gensalt()print(salt)# 使用生成的salt哈希密码hashed_password bcrypt.hashpw(password.encode(utf-8), salt)print(hashed_password)# 将salt和哈希密码合并以便存储stored_password f"{sal…

Moonbeam生态项目分析 — — 游戏项目The Great Escape

概览 The Great Escape是一款2D的Play and Earn平台游戏&#xff0c;曾入选MoonbeamMoonbeam Accelerator&#xff0c;并经此培训孵化后于2023年7月正式发表。 玩家必须在给定时间内在充满敌人和陷阱的关卡中收集尽可能多的水果。游戏结束后&#xff0c;游戏主要根据收集的水…

【蓝桥杯备考资料】Python基础语法

【蓝桥杯备考资料】Python基础语法 基础语法一、数据类型1.Number1.1整型1.2浮点型1.3复数类型1.4常用数学函数 2.String2.1字符串访问和运算2.2字符串函数 3.List(重点)3.1列表的创建3.2列表函数 4.Tuple5.Dictionary5.1字典的访问5.2添加&#xff0c;修改&#xff0c;复制&am…

Pytorch-RealSR超分模型

1.前言 RealSR 是一种基于学习的单图像超分辨率&#xff08;SISR&#xff09;模型&#xff0c;专门针对真实世界的图像。它由腾讯 AI 实验室于 2020 年提出。 RealSR 的核心创新是提出了一种新的退化模型&#xff0c;该模型能够更好地模拟真实世界的退化过程。该模型考虑了真实…

202312实战面试

1、 事件循环和变量提升。 for(var i 0; i < 5; i){setTimeout(() >{console.log(i)}, 1000) } console.log(i) // 先输出6、间隔一秒后输出六次6&#xff1b;// 考察宏微任务、EventLoop 之类 Promise.resolve().then(() > {console.log(0);return Promise.resolve(…

【已解决】修改了网站的class样式name值,会影响SEO,搜索引擎抓取网站及排名吗?

问题&#xff1a; 修改了网站的class样式name值&#xff0c;会影响搜索引擎抓取网站及排名吗&#xff1f; 解答&#xff1a; 如果你仅仅修改了网站class样式的名称&#xff0c;而没有改变网站的结构和内容&#xff0c;那么搜索引擎通常不会因此而影响它对网站的抓取和排名。但…

中国自动驾驶行业:迈向无限可能

中国自动驾驶行业正在经历蓬勃发展&#xff0c;取得了令人瞩目的成果。这一行业在技术创新、政策支持和市场需求等方面展现出巨大潜力。本文将从技术创新、产业生态和前景发展等角度&#xff0c;探讨中国自动驾驶行业的现状和未来前景。 中国自动驾驶行业正处于一个令人瞩目的快…

C++基础语法总结

C使用 C的源文件扩展名是&#xff1a;cppC程序的入口是main函数C完全兼容c语言的语法 1、cin、cout C中常使用cin、cout进行控制台的输入和输出 #include <iostream> using namespace std;int main() {cout << "hello world !!!" << endl;retu…

德人合科技 | 设计公司文件加密系统——天锐绿盾自动智能透明加密防泄密系统

设计公司文件加密系统——天锐绿盾自动智能透明加密防泄密系统 PC端访问地址&#xff1a; www.drhchina.com 一、背景介绍 设计公司通常涉及到大量的创意作品、设计方案、客户资料等重要文件&#xff0c;这些文件往往包含公司的核心价值和商业机密。因此&#xff0c;如何确保…

动态代理和静态代理

代理模式&#xff08;Proxy Pattern&#xff09;&#xff1a;通过创建代理对象来控制对另一个对象的访问&#xff0c;通常用于实现横切关注点&#xff08;cross-cutting concerns&#xff09;&#xff0c;例如日志记录、系统安全性检查等。常见的代理模式就是动态代理和静态代理…

Linux磁盘空间不足扩展

先在虚拟机Vmware上扩展磁盘空间 后将fdisk 进行分区之后&#xff0c;在/dev/中找不到新分区文件 3.创建物理卷pv时发现找不到/dev/sda3分区&#xff0c;通过ls查看确认在/dev/中没有找到新分区文件 4.解决方法 执行&#xff1a;partprobe 再查看/dev中是否可以看到新分区文件…

QT计算时间差 秒 毫秒 (另附c++版本)

QT计算时间差&#xff0c;两次时间的间隔 项目计算码流需要用到计算时间差 QT版本 利用secsTo函数 QDateTime startTime QDateTime::currentDateTime();Sleep(5000);QDateTime endTime QDateTime::currentDateTime();qint64 intervalTime startTime.secsTo(endTime); //求…

云轴科技ZStack 英特尔联合成立云系统解决方案创新中心

近日&#xff0c;云轴科技ZStack 与英特尔联合成立云系统解决方案创新中心&#xff0c;并完成揭牌仪式。双方将基于多年合作基础进一步加快研发下一代创新技术和解决方案&#xff0c;为客户和合作伙伴提供更高效、安全的云基础设施解决方案。 左三:云轴科技ZStack 联合创始人兼…

量化交易学习笔记:XGBoost 在量化选股中的应用

一、引言 本篇文章通过借鉴传统机器学习算法——XGBoost——对相同的量价因子进行实验&#xff0c;方便与深度学习模型进行对比实践。 二、算法介绍 XGBoost 是在 Gradient Boosting&#xff08;梯度提升&#xff09;框架下实现的机器学习算法&#xff0c;全称为“极限梯度提…