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

【入门夯实】ipairs与pairs的选择:数组与哈希的遍历分界

2026-09-24 20:13 作者:996 技术组 996引擎Lua教程传奇脚本入门夯实996引擎Luaipairspairs

学员常见误区

学员把 ipairs 与 pairs 当可互换的关键字混用:对依赖顺序的数组用 pairs——pairs 遍历哈希区顺序不保证,强化档位弹出的顺序每次可能不同;对含中间断档的表用 ipairs——ipairs 从 1 数到第一个 nil 就停,洞后面的元素全部漏遍历。错误场景:

lua
local rates = { [1] = 100, [2] = 200, [4] = 400 }
for i, v in ipairs(rates) do
    sendmsg(nil, 1, i .. "档 " .. v)
end

4 档的 400 不会被输出,#rates 的值也不可靠。

正确姿势

分界标准:从 1 开始连续的数组用 ipairs,键值对配置表用 pairs 不依赖顺序。沃玛装备强化档位是连续数组,行会技能开关是键值表,两种遍历各得其所。示例代码如下:

lua
local costs = { 1000, 3000, 9000, 27000, 81000 }
local function showCosts(actorName)
    local actor = getplayerbyname(actorName)
    for lv, gold in ipairs(costs) do
        sendmsg(actor, 1, "强化" .. lv .. "档需 " .. gold .. " 金币")
    end
end

5 档强化费用按 1 到 5 顺序稳定输出,ipairs 保证。示例代码如下:

lua
local skillSwitch = { fire = true, heal = false, taunt = true }
local function showSwitch()
    for name, on in pairs(skillSwitch) do
        if on then
            sendmsg(nil, 1, "行会技能开启:" .. name)
        end
    end
end

技能开关表只关心开没开,不关心输出顺序,pairs 合适。

引擎验证

三步验证:costs 表 5 档全部输出且顺序固定;给 rates 表复现 ipairs 断档漏遍历,记住 # 不可靠的结论;把 skillSwitch 遍历跑两次,观察 pairs 输出顺序是否可能与上次不同。

举一反三

既要遍历又要顺序保证的混合表,思路是先把键收进数组排序,再按序取值。示例代码如下:

lua
local keys = {}
for k in pairs(skillSwitch) do
    keys[#keys + 1] = k
end
table.sort(keys)
for _, k in ipairs(keys) do
    sendmsg(nil, 1, k .. "=" .. tostring(skillSwitch[k]))
end
作者履历与出处

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

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

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

LATEST ARTICLES

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

策划架构996引擎

【策划架构】互不侵犯协定:缓冲边境的条约设计

设计初衷 敌对帮会边境摩擦不断:小规模遭遇天天有,谁都不敢先收手(怕被当成软弱)——敌对没有制度化的降温通道。互不侵犯协定设…

2026-09-25 22:13 996 技术组
策划架构996引擎

【策划架构】募兵制:帮会扩军的募兵与编制设计

设计初衷 帮会扩张靠熟人拉人:增长有天花板、新人质量参差、老人不愿带新——帮会规模长期停滞。募兵制设计:帮会发布募兵任务包(…

2026-09-25 22:13 996 技术组
高级技巧996引擎

【高级技巧】分形递归:科赫曲线的递归绘制封装

底层原理 科赫曲线:把一条线段三等分,中段替换为凸起的三角折线,对每段递归重复——每迭代一次线段数乘 4。递归结构极简:dr…

2026-09-25 22:13 996 技术组
高级技巧996引擎

【高级技巧】空对象模式:nil判断的默认行为封装

底层原理 取玩家配置缺字段时返回 nil,调用方到处判 nil——判空代码散落每个调用点。空对象模式:缺配置时返回一个有默认…

2026-09-25 22:13 996 技术组
策划架构996引擎

【策划架构】帮规条款:行会规则的奖惩体系设计

设计初衷 行会规矩全靠会长嘴说:违规没有标准、赏罚全凭心情——帮规形同虚设,成员不服管理。帮规条款设计:行会规则条文化——条…

2026-09-25 22:13 996 技术组
进阶实战996引擎

【进阶实战】哨戒信标:警戒区域的联动报警封装

业务场景 防务报警靠人肉喊话:入侵者来了只能靠肉眼发现再频道通知。哨戒信标封装:部署信标覆盖警戒区,区域内出现入侵者时信标联…

2026-09-25 22:13 996 技术组