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循环保证循环体内的代码至少会被执行一次,因此在循环体内部要谨慎地编写代码,避免出现意料之外的行为。

相关推荐
想搞艺术的程序员8 分钟前
Go Error 全方位解析:原理、实践、扩展与封装
开发语言·后端·golang
闲人编程32 分钟前
Python游戏开发入门:Pygame实战
开发语言·python·游戏·pygame·毕设·codecapsule
是苏浙39 分钟前
零基础入门C语言之枚举和联合体
c语言·开发语言
报错小能手41 分钟前
C++笔记(面向对象)静态联编和动态联编
开发语言·c++·算法
小肖爱笑不爱笑1 小时前
2025/11/5 IO流(字节流、字符流、字节缓冲流、字符缓冲流) 计算机存储规则(ASCII、GBK、Unicode)
java·开发语言·算法
手握风云-1 小时前
Java 数据结构第二十八期:反射、枚举以及 lambda 表达式
java·开发语言
ᐇ9591 小时前
Java Vector集合全面解析:线程安全的动态数组
java·开发语言
Hello_WOAIAI2 小时前
2.4 python装饰器在 Web 框架和测试中的实战应用
开发语言·前端·python
搬山.摧城2 小时前
线程池和单例模式
开发语言·单例模式
百锦再2 小时前
第1章 Rust语言概述
java·开发语言·人工智能·python·rust·go·1024程序员节