Lua 中的do...end和repeat...until

do...end

在Lua中,do...end被用作一个语法结构,用于创建一个代码块。代码块是一组语句的集合,可以将多行代码组织在一起,形成一个独立的执行单元。

do...end的基本语法如下:

do

-- 代码块

end

在do...end语法结构中,可以包含任意数量的语句,这些语句会按顺序执行。代码块内部可以包含条件语句、循环语句、函数定义、变量赋值等等。

do...end的主要作用有两个:

  1. 创建一个作用域:do...end可以将其中的代码块封装在一个新的作用域中,使得在代码块内定义的局部变量只在该作用域内有效,避免与外部作用域中的变量冲突。

  2. 控制流程逻辑:do...end可以用于控制流程的执行顺序,例如与条件语句if配合使用,或者在某些场景下用于提供额外的逻辑控制。

下面是一个示例,展示了do...end的用法:

Lua 复制代码
local x = 10

if x > 5 then
    do
        local y = 20
        print(x + y)  -- 这里可以访问到x和y
    end
end

print(y)  -- 这里无法访问到变量y,因为它的作用域仅限于do...end代码块内部

在上述代码示例中,变量x在if语句外部定义,而变量y是在do...end代码块内部定义的。在代码块内部,可以访问到x和y,但在代码块外部,只能访问到x,无法访问到y,因为y的作用域仅限于代码块内部。

repeat...until

repeat...until是一种循环结构。它的作用是重复执行一段代码块,直到指定的条件为真。

repeat...until循环的基本语法如下:

repeat

-- 代码块

until 条件

循环会首先执行一次代码块,然后检查条件。如果条件为假,则继续重复执行代码块,直到条件为真为止。

与while和for循环不同,repeat...until循环保证至少会执行一次代码块,无论条件是否成立。如果条件一开始就成立,循环体内的代码也会执行一次后结束循环。

下面是一个示例:

Lua 复制代码
local i = 1
repeat
    print('i:', i)
    i = i + 1
until i > 10

上述代码会输出从1到10的数字。循环会先执行一次打印语句(也就是说无论条件是否为真都会先执行一次代码结构才会去检查条件),然后检查条件i > 10。如果条件为假(即i小于等于10),则继续重复执行代码块,每次循环都会打印出当前的i值,并将i递增。直到i大于10时,条件为真,循环结束。

需要注意的是,由于repeat...until循环保证循环体内的代码至少会被执行一次,因此在循环体内部要谨慎地编写代码,避免出现意料之外的行为。

相关推荐
毕设源码-邱学长10 小时前
【开题答辩全过程】以 基于Java的学校住宿管理系统的设计与实现为例,包含答辩的问题和答案
java·开发语言
rookieﻬ°11 小时前
PHP框架漏洞
开发语言·php
炸膛坦客11 小时前
单片机/C/C++八股:(二十)指针常量和常量指针
c语言·开发语言·c++
兑生12 小时前
【灵神题单·贪心】1481. 不同整数的最少数目 | 频率排序贪心 | Java
java·开发语言
炸膛坦客13 小时前
单片机/C/C++八股:(十九)栈和堆的区别?
c语言·开发语言·c++
零雲13 小时前
java面试:了解抽象类与接口么?讲一讲它们的区别
java·开发语言·面试
Jay_Franklin13 小时前
Quarto与Python集成使用
开发语言·python·markdown
2401_8318249614 小时前
代码性能剖析工具
开发语言·c++·算法
是wzoi的一名用户啊~14 小时前
【C++小游戏】2048
开发语言·c++
Sunshine for you14 小时前
C++中的职责链模式实战
开发语言·c++·算法