Lua08——Lua循环
  R1u4c9Dlbnmn 2023年11月12日 25 0

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

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

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

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

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循环_控制语句

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

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

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

3 流程控制

使用 if 或者 if...else 语句,通过对程序中某个条件的判断,来决定后续程序的走向。

上边的循环中,也使用了单一 if 的情形,下这是一个比较复杂的应用。

a = 3
if a>8 then
    print("a > 8")
elseif a < 8 then
    if a == 2 then
        print("a == 2")
    else
        print("a < 8")
    end
end


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: 代码静态扫描 下一篇: 函数和递归(2)
  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

R1u4c9Dlbnmn