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

相关推荐
LDR0068 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术8 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园8 天前
C++20 Modules 模块详解
java·开发语言·spring
swordbob8 天前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
源分享8 天前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm
Luminous.8 天前
C语言--day30
c语言·开发语言
何以解忧,唯有..9 天前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
謓泽9 天前
C语言不是语法,是通往机器的地图。
c语言·开发语言
云水一下9 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
飞天狗1119 天前
零基础JavaWeb入门——第五课第二小节:九大内置对象 · 第2个:response(响应对象)
java·开发语言