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

lua学习-3 循环和流程控制

这里写目录标题

    • 判断
    • for 循环
      • 数值遍历
      • 泛型遍历
        • 遍历数组
        • 遍历对象
        • ipairs 和 pairs的异同
    • while 循环
    • repeat循环
    • goto
      • 基础用法
      • 注意事项

判断

for 循环

数值遍历

for exp1,exp2,exp3 do//todoend

上述代码是指:从exp1 到exp2 以exp3为步长进行循环并执行todo代码,exp3默认为1,其实exp2可以是函数,但是只会执行一次(计算出结果,就不会再次执行了).

for i=1,f(x) doprint(i)
endfor i=10,1,-1 doprint(i)
end

泛型遍历

遍历数组

a = {"one", "two", "three"}
for i, v in ipairs(a) doprint(i, v)
end 

遍历对象

b = {t1='rt1',t2=2
}for i, v in pairs(b) doprint(i, v)
end 

ipairs 和 pairs的异同

相同:
都是能遍历集合(表、数组),两者均优先按顺序输出没有key的值;
不同:
ipairs从第一个数字key开始,依次输出所有的key+1的键值,遇到字母下标并不会结束遍历,只是不输出而已,如果遇到nil则退出;
pairs无序输出字母类型key或者数字类型key的键值,遇到nil不输出,但不会停止遍历;

  1. ipairs会按照key的顺序输出数据,遇到不连续的数据停止输出,pairs会无序输出所有数据
  2. pairs和ipairs都会输出没有key的数据,ipairs会跳过字符串的key,pairs会输出所有的数据,优先输出不带key的按照顺序,带key的无序输出
  3. ipairs遇到nul会停止,pairs不会停止
  4. key为数组才是数组下标,key为字符串数字则是字符串下标
table = {["1"]="11",[1]="1",[3]="3"}
print("-----------ipairs----------------")
for k,v in ipairs(table) doprint(k,v)
end
print("-----------pairs----------------")
for k,v in pairs(table) doprint(k,v)
end
-----------ipairs----------------
1	1
-----------pairs----------------
1	11
1	1
3	3

参考链接

while 循环

while(condition)
dostatement(s)
end

statements(循环体语句) 可以是一条或多条语句,condition(条件) 可以是任意表达式,在 condition(条件) 为 true 时执行循环体语句,建议有逻辑将condition修改为false,否则将死循环。

repeat循环

repeatstatements
until( condition )

循环条件判断语句(condition)在循环体末尾部分,所以在条件进行判断前循环体都会执行一次。
如果条件判断语句(condition)为 false,循环会重新开始执行,直到条件判断语句(condition)为 true 才会停止执行。
类似于其他语言中的dowhile循环,statements一定会 执行一次,当condition为真则跳出循环(区分while循环)

goto

基础用法

goto FLAG;
a = 123
::FLAG::;
print(a)

注意事项

  1. 不能从外部goto到代码块中
  2. 不同跳出或者跳入一个函数中(因为函数也是一个代码块)
http://www.lryc.cn/news/144912.html

相关文章:

  • 3、监测数据采集物联网应用开发步骤(3)
  • MySQL用户管理及用户权限
  • Yolov8-pose关键点检测:模型轻量化创新 | PConv结合c2f | CVPR2023 FasterNet
  • 聊聊mybatis-plus的SafetyEncryptProcessor
  • 【PCL (Point Cloud Library)可视化点云的工具汇总】
  • 实现 Trie (前缀树)
  • ElasticSearch基础知识汇总
  • 服务器数据库中了locked勒索病毒怎么办,locked勒索病毒恢复工具
  • 没有 JavaScript 计时器的自动播放轮播 - CSS 动画
  • 《Flink学习笔记》——第三章 Flink的部署模式
  • 网络安全(黑客技术)0基础学习手册
  • 腾讯云服务器价格表大全_轻量服务器_CVM云服务器报价明细
  • vue中bus的使用和涉及到的问题
  • Flink的简要概述
  • 多线程下的signal信号处理
  • 〖Python网络爬虫实战㉞〗- 图形验证码OCR识别
  • Python Scrapy网络爬虫框架从入门到实战
  • 后端面试话术集锦第四篇:ElasticSearch面试话术
  • C++之ifstream成员函数get、tellg、eof实例(一百八十五)
  • 安卓webview,网页端生成安卓项目(极速生成)教程
  • 如何在vscode导入下载的插件安装包
  • springboot 多线程实战
  • 求生之路2社区服务器sourcemod安装配置搭建教程centos
  • 通达OAV12版本,表单及流程,定制开发总结
  • 浅析Linux 物理内存外碎片化
  • C#中的get和set
  • mysql8.0以上忘记密码的重置方法 - window系统
  • 手写Vue3响应式数据原理
  • 基于PIC单片机篮球计分计时器
  • 关于Maxwell与Kafka和数据库的监控