首页 > 其他分享 >Lua08——Lua循环

Lua08——Lua循环

时间:2023-09-23 22:02:03浏览次数:27  
标签:语句 index 循环体 abc Lua08 Lua 循环 print

有时需要进行规律性的重复操作,需要用到程序中的循环语句。

循环语句是由循环体及循环的终止条件两部分组成。

循环语句是在一定条件下反复执行一段程序的流程结构,被反复执行的程序称为循环体。

循环是否结束,取决于循环的终止条件。

1 Lua中的循环方式

循环类型

描述

while

在条件为 true 时,循环体被重复执行。循环前先检查条件是否为 true

for

重复执行指定语句,重复次数可在 for 语句中控制

repeat...until

重复执行循环,直到指定的条件为 true 时,结束循环

1.1 while 循环

while 循环的样式如下:

while(循环条件)

do

循环体

end

当循环条件为 true 时,循环执行,否则退出循环;

如果循环体中未对循环条件进行修改,循环将持续执行。

local a = 5
while(a > 0)
do
    print("a = " .. a)
    a = a - 1
end

输出如下

a = 5

a = 4

a = 3

a = 2

a = 1

1.2 for 循环

for 循环结构如下:

for 循环因子

do

循环体

end

do 的位置可以在第一行,也可以在第二行,语法没有强制要求。

循环因子,决定循环次数及被循环的数据,如数组或table类型的数据。

对数字进行循环:

for i = 1 , 5 do
    print(i)
end

对数组数据进行循环打印

  • ipairs() 方法可以可以对table数据中的数组进行遍历
name = {"ticktok", "facebook", "twitter", "google", "github"}
for i, v in ipairs(name) do
    print(i, v)
end

输出如下

1 ticktok

2 facebook

3 twitter

4 google

5 github

1.3 repeate...until 循环

repeate 循环,是当until 后的条件为true时,结束循环。

在循环体中需要修改循环变量,否则会导致死循环。

index = 0
repeat
    print("index " .. index)
    index = index + 1
until(index == 5)

输出如下

index 0

index 1

index 2

index 3

index 4


2 循环控制语句

循环控制语句用于控制程序的流程,以实现程序的各种结构方式。

在 Lua 中支持以下控制语句

控制语句

描述

break语句

退出当前循环或语句,并开始脚本执行当前循环体之后的语句

goto语句

将程序的控制点转移到一个指定的标签处


2.1 break

如下程序中,当循环变量等于3时,循环将终止。

index = 0
repeat
    print("index " .. index)
    index = index + 1

    if index == 3 then
        break
    end
until(index == 5)

输出

index 0

index 1

index 2

2.2 goto

首先需要定义一个能够用于跳转的标签,使用 ::标签名:: 进行定义,如

::abc::print("欢迎跳转到标签abc")

将循环及标签跳转加在一起,效果如下。

index = 0
repeat
    print("index " .. index)
    index = index + 1

    if index == 3 then
        goto abc
    end
until(index == 5)

::abc::print("欢迎跳转到标签abc")

当循环变量 index 等于3时,程序将结束循环并跳转到标签 abc 的位置继续执行。

运行后输出如下

index 0

index 1

index 2

欢迎跳转到标签abc

  • 需要注意的是:如果要跳转的标签在循环体之前,可能会造成程序死循环

如下代码中,当循环变量index等于3时,程序结束循环并通过goto跳转到循环体之前的标签处,当标签中的语句执行后,程序继续向下执行,又会进行到循环体中,从而造成死循环。这种情况是需要避免的。

::abc::print("欢迎跳转到标签abc")
index = 0
repeat
    print("index " .. index)
    index = index + 1

    if index == 3 then
        goto abc
    end
until(index == 5)

2.3 死循环

Lua08——Lua循环_死循环

即就是循环体重复执行,永远不会退出。

在上边的代码中,就是一个死循环。

一般来说,这种情况会对服务器资源造成占用,并有可能引发服务器资源内存资源耗尽而崩溃。

标签:语句,index,循环体,abc,Lua08,Lua,循环,print
From: https://blog.51cto.com/u_113754/7581329

相关文章

  • Black-Box Attack-Based Security Evaluation Framework forCredit Card Fraud Detect
    Black-BoxAttack-BasedSecurityEvaluationFrameworkforCreditCardFraudDetectionModels动机AI模型容易受到对抗性攻击(对样本添加精心设计的扰动生成对抗性示例)现有的对抗性攻击可以分为白盒攻击和黑盒攻击。白盒攻击:攻击者可以访问有关目标模型的所有信息,包括训练集......
  • 11-JavaScript 逻辑条件 ,if判断 ,while循环,算数运算相关的案例演示
    1、案例:猜数字设置一个1-10之间的随机数,然后输入进行猜数字,猜的大了怎么样、猜的小了怎么样、猜对了怎么样知识点:设置随机数、if判断、while循环写题思路:1.设置弹框提出问题2.定义一个随机数0-10的数组3.if判断取值的范围,在其范围内反馈的结果4.while循环,直到猜对停止......
  • python 循环 import模块
    关于循环while条件:当条件为true时,不断执行子代码foriinrange(20):循环20次子代码break结束当前循环continue跳过当前循环importrandom模块random.choice()随机一个参数random.sample(数据源,3)从数据源中随机抽3个值random.randint(1,100)打印一个随机数......
  • 【Spring使用三级缓存解决循环依赖的过程】
    testService1和testService2相互依赖当Spring创建testService1对象时,它会先从一级缓存中查找是否存在testService1的实例。如果缓存中不存在testService1实例,它将继续查找二级缓存中是否存在testService1。如果二级缓存中也不存在testService1实例,则Spring会尝试从三级缓存中获取......
  • 实验1:SDN拓扑实践进阶部分(使用python循环语句)
    #!/usr/bin/envpythonfrommininet.topoimportTopoclassMyTopo(Topo): def__init__(self): Topo.__init__(self) #host foriinrange(1,9): self.addHost("h"+str(i)) #switch foriinrange(1,11): self.addSwitch("s&quo......
  • 分支和循环语句3
    本期主打的就是通过一些简单地练习题来加深对分支和循环语句应用:1.输入三个数字,依次由大到小打印出来:#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>intmain(){ inta=0; intb=0; intc=0; intk; scanf("%d%d%d",&a,&b,&c); if(a<b) { k=a; a......
  • 循环 JSONArray
    当需要遍历一个JSONArray时,可以使用Java中的循环结构来实现。以下是一个示例代码,演示如何使用Java循环遍历一个JSONArray: javaimportorg.json.JSONArray;importorg.json.JSONObject;publicclassJSONArrayExample{publicstaticvoidmain(String[]args){......
  • Java 中for循环和foreach循环哪个更快?
    摘要:本文由葡萄城技术团队于博客园发布。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。前言在Java编程中,循环结构是程序员常用的控制流程,而for循环和foreach循环是其中比较常见的两种形式。关于它们哪一个更快的讨论一直存在。本文......
  • Go 1.22 中的 For 循环
    原文在这里。由DavidChaseandRussCox发布于2023年9月19日Go1.21版本包含了对for循环作用域的预览更改,我们计划在Go1.22中发布此更改,以消除其中一种最常见的Go错误。问题如果你写过一定量的Go代码,你可能犯过一个错误,即在迭代结束后仍然保留对循环变量的引用......
  • 循环
    importjava.util.Scanner;publicclassTestFor10{publicstaticvoidmain(String[]args){/*实现一个功能:【1】请录入10个整数,当输入的数是666的时候,退出程序【2】判断其中录入的正数的个数并输出【3】判断......