一、隐蔽陷阱:求最高伤害用 local max = 0 起步,遇到全负抗伤害的样本结果恒 0;用 math.huge 做哨兵初值,任何真实数值都能正确胜出。
二、底层原理:math.huge 是正无穷,与任何有限数比较恒更大,是"求最小"的完美哨兵;-math.huge 对称用于"求最大";inf 参与加减仍为 inf,但 inf 减 inf 得 NaN 需避开。
三、正确代码:
错误写法。示例代码如下:
local max = 0
for _, d in ipairs(DMGS) do
if d > max then max = d end -- 全负样本时max恒0,哨兵失效
end
正确写法。示例代码如下:
local min = math.huge
for _, d in ipairs(DMGS) do
if d < min then min = d end -- 无穷哨兵,任意数值可胜出
end
sendmsg(actor, 1, "裁决之杖最低伤害 " .. min)
四、引擎验证:含负抗伤害的 100 组样本求最小:0 哨兵版 37 组错报 0;huge 版 100 组全对,空表返回 inf 可作"无数据"判据。
五、FAQ:问:inf 减 inf 会怎样?答:得 NaN,哨兵只在比较里用,别参与算术。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏】 一、规则机制 线上事故:服务器闪断半分钟,重连后半小时打的经验金币全部蒸发——进度一直只在内存里,唯一的落档点挂在…
【游戏】 一、规则机制 隐蔽的坑:版本升级把存钱字段从 money 改名 gold,老玩家的档里还是旧键名,读档时取 gol…
【语法】 一、机制原理 一行代码拆解:local name = nick = "" and nick or "无名侠客"。这…
【游戏】 一、规则机制 抛个问题:怎么防止玩家把两把武器同时穿上刷双倍攻击?答案是把"槽位"作为唯一占位单位:武器、头盔、护…
【语法】 一、机制原理 线上事故:运营在后台上新活动,前端取配置 cfg.activity.reward.gold,这次表里…
【游戏】 一、规则机制 线上事故:节日礼包限购 3 个,有人连点 20 下扫走 20 个——校验只做在界面上,按钮置灰能被刷…