查看: 42|回复: 2

[lua]编程基础:判断与循环

[复制链接]

65

主题

79

回帖

1690

积分

金牌会员

社会你狗哥

积分
1690
发表于 2026-5-25 14:03:26 | 显示全部楼层 |阅读模式
Lua编程基础:判断与循环一、判断语句基础结构
判断语句由三个部分组成:条件判断、执行代码、结束标记。当条件为真时,执行对应的代码块。
语法糖:三目运算
新手与高手的分水岭在于代码的简洁程度。三目运算是一种更加简洁的写法,可以用一行代码替代传统的多行判断结构。
核心逻辑:条件满足时执行第一个结果,否则执行第二个结果。当条件为真,走前面的路径;条件为假,走后面的路径。
防卫语句(Guard Clause)
防卫语句是新手进阶的关键技巧。如果你不会使用防卫语句和三目运算,就永远无法脱离新手阶段。
传统写法的问题:当需要判断多个条件时(如用户名、密码、登录时间、IP地址等),如果全部使用嵌套判断,代码会层层缩进,形成"箭头型"代码,难以阅读和维护。
防卫语句的优势:通过提前返回(return)的方式,在条件不满足时立即中断执行。这种方式让代码扁平化,每个异常情况都有独立的判断和处理,逻辑清晰,易于维护。
防卫语句的本质:提前处理异常,将所有可能发生的异常情况前置判断。可以理解为"当我不希望某种情况发生,就提前退出",避免进入冗长的主逻辑。
应用示例:
  • 玩家等级不足时直接返回"等级不足"
  • 用户名或密码为空时直接返回错误提示
  • 物品不足、金币不足等条件判断
防卫语句不仅适用于Lua,在其他脚本语言中同样存在类似的实现方式。

二、循环语句第一种:while循环
特性:当条件满足时持续循环,先检查条件再执行。
结构:初始化变量 → 判断条件 → 执行代码 → 更新变量 → 回到条件判断
注意事项:必须确保循环内有退出机制(如变量自增),否则会形成死循环。
第二种:repeat-until循环
特性:至少会执行一次,先执行代码再判断条件。
与while循环的区别在于判断时机的不同:while是先判断后执行,repeat是先执行后判断。
第三种:for循环(数字循环)—— 重点掌握
这是最常用、最重要的循环方式,建议初学者重点掌握,其他两种循环了解即可。
结构组成:
  • 第一个参数:起始值
  • 第二个参数:终点值(包含该值,到等于此值时停止)
  • 第三个参数:步长(可省略,默认为1)
步长控制:
  • 步长为正数:正向循环(如1到5)
  • 步长为负数:反向循环(如5到1)
  • 步长为2:每次跳过一个数字(如1、3、5)
循环控制:break语句用于跳出当前循环,立即终止循环执行。

三、循环嵌套
循环嵌套指在一个循环内部再放置另一个循环。外层循环每执行一次,内层循环会完整执行一轮。
变量命名建议:内外层循环使用不同的变量名(如外层用i,内层用j),避免混淆,提高代码可读性。
应用示例:九九乘法表可以通过双重循环实现,外层控制行数,内层控制列数,通过调整内层循环的起始值可以控制输出格式。

四、其他重要概念变量赋值
多变量同时赋值时,按位置一一对应。如果右侧值的数量少于左侧变量数量,多余的变量会被赋值为空值(nil)。
代码的本质
所有代码最终都在做两件事:计算和搬运(内存操作)。无论是判断、循环还是函数调用,本质上都是在控制数据的流动和转换。
不建议使用的语句
goto语句虽然官方支持,但会破坏代码的结构化,导致代码难以阅读和维护。建议永远不要使用,而是通过合理的判断和循环结构来控制流程。

五、学习建议
练习重点:
  • 判断:练习处理分支逻辑
  • 防卫语句:练习提前预判异常情况
  • 循环:理解重复执行的价值,尝试用循环替代重复代码
学习方法:结合AI工具辅助学习,遇到不懂的基础概念随时提问,通过反复练习形成肌肉记忆。
核心原则:理解Lua的语法规则和内存机制,做到"人机合一",让代码在内存中高效流动。

六、实例

-- 生成九九乘法表
for i = 1, 9 do
    local row = ""
    for j = 1, i do
        row = row .. (j .. "*" .. i .. "=" .. (i * j) .. "\t")
    end
    print(row)
end



单选投票, 共有 3 人参与投票
100.00% (3)
0.00% (0)
您所在的用户组没有投票权限

65

主题

79

回帖

1690

积分

金牌会员

社会你狗哥

积分
1690
楼主 发表于 2026-5-25 14:04:02 | 显示全部楼层
[lua]编程基础:判断与循环

33

主题

47

回帖

1323

积分

金牌会员

积分
1323
QQ
发表于 2026-6-2 12:31:19 | 显示全部楼层
真专业啊
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表