CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
进阶实战游戏功能996引擎

Lua+数字for:步长为负的倒序遍历本质

2026-09-29 16:16 作者:996 技术组 996引擎Lua教程传奇脚本进阶实战游戏功能996引擎

【语法算法】

数字 for 的倒序遍历就这一行:

lua
for i = 10, 1, -1 do print(i) end

步长为负一时从大到小遍历——数字 for 的倒序全部机制就这一行。可这一行的前后各有一个细节:前面是"初始值必须大于终止值",后面是"步长不能为零"。今天拆开。

一、正序、倒序、步长三段

数字 for 的三段。正序:for i = 1, 10, 1 从 1 到 10——步长为正时初始值小于终止值——每轮加一步。倒序:for i = 10, 1, -1 从 10 到 1——步长为负时初始值大于终止值——每轮减一步。步长:步长不能为零——Lua 的 for 循环在步长为零时报错 "for step is zero"——步长为零的循环永远无法到达终止条件。三段连起来:数字 for 玩的是"方向的精确控制"——步长正负决定方向,步长大小决定粒度。

mermaid
graph TD
    A["for i = start, stop, step"] --> B{"step > 0?"}
    B -->|是| C["start < stop: 正序循环"]
    B -->|否| D["start > stop: 倒序循环"]
    B --> E["step == 0: 报错"]
    C --> F["i = i + step"]
    D --> G["i = i + step (负值)"]

二、倒序的正确写法

lua
-- 倒序遍历表
local t = {"a", "b", "c", "d"}
for i = #t, 1, -1 do
    print(i, t[i])
end
-- 4  d
-- 3  c
-- 2  b
-- 1  a

-- 倒序遍历时安全删除
for i = #t, 1, -1 do
    table.remove(t, i)
end
-- 倒序删除: 不会跳过元素

倒序遍历删除是 goto 标签和 table.remove 的交叉应用——倒序保证了删除操作不会打乱未遍历元素的索引。

三、倒序删除的安全与步长的纪律

倒序删除是 table.remove 的最佳搭档:正序删除时被删除元素后面的所有元素索引前移——后续遍历会跳过紧邻的下一个元素——倒序删除从尾部往前走,前面的索引不受影响——这就是倒序删除安全的根本原因。步长的精度也值得一提:步长不必是整数——for f = 0, 1, 0.1 可以做浮点循环——但浮点步长有精度误差——累积误差可能导致循环次数比预期多或少一轮——浮点步长的循环要用 < 终止条件而不是 ==。最后一条纪律:for 循环的循环变量是只读的——在循环体内修改循环变量不会改变步进——Lua 的 for 循环变量每次迭代都从内部状态重新取值——循环体内修改循环变量是无效操作。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

幂尔框架 · 实战干货 · 接口调用

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

进阶实战游戏功能

绝境回纹:血越少纹越亮,一口气回到满

【游戏功能】 再抛一个老问题:奶量是固定好还是浮动好?固定回五十的术式,满血喝是五十、残血喝也是五十,账目清楚,可总差点意思…

2026-10-01 20:32 996 技术组
进阶实战游戏功能

蚀蓝纹咒:抽干它的法力,咒念憋在喉咙里

【游戏功能】 前阵子一场"永动机事故"在群里传了半天:某个会喷火的精英怪被玩家围了一整晚,火喷了八个钟头没停——后台一看,它…

2026-10-01 20:32 996 技术组
进阶实战游戏功能

双纹换形:红纹饮刀蓝纹披甲,一念换身

【游戏功能】 mode=mode==='red'?'blue':'red' ——先拆这一行。一个变量存着当前纹色,三元运算符…

2026-10-01 20:32 996 技术组
进阶实战游戏功能

免死金纹:纹碎金光,刀下留人一线

【游戏功能】 上一版埋了个查了半宿的隐蔽报错:测试组报"玩家血条归零了人还站着",后台的死亡日志一条没有,复活接口也没被调过…

2026-10-01 20:32 996 技术组
进阶实战游戏功能

夺纹掠势:剥了它的怒,披在我身上

【游戏功能】 先抛一个坑:增益为什么只能自己挂?怒气、护体、神行,攻略里全在教你"什么时候开自己的招",可怪身上明晃晃挂着的…

2026-10-01 20:32 996 技术组
进阶实战游戏功能

反纹镜咒:纹光一闪,它的火原路奉还

【游戏功能】 昨天夜里一场线上事故把"反纹"顶上了台面:一个玩家把反纹挂在自己身上站桩挂机,怪的火球过来他没倒,反倒躺下的是…

2026-10-01 20:32 996 技术组