【语法】
一、机制原理
抛坑提问:道具的原始字段名和界面要展示的属性名对不上,换算逻辑散在展示层里到处都是——收口到哪?换算表映射收口:映射表把源字段名映射到目标属性名,换算函数遍历道具的原始字段,查表命中就把数值累加进输出表;映射表可增可改,换算器一行不动。源码的属性换算文件就是按这个思路把道具属性整理成前端可用的形态。
二、错误写法
-- 错误:展示层直接读原始字段名,改名即崩
out.atk = item.DC
out.hp = item.HP
三、正确写法
local MAP = {
DC = {key = "minAtk"},
HP = {key = "maxHp"},
}
local function convert(item, out)
for src, rule in pairs(MAP) do
if item[src] then
out[rule.key] = (out[rule.key] or 0)
+ item[src]
end
end
return out
end
四、引擎验证
原始字段按映射表归位到目标属性名;同名属性多来源时自动累加。
五、FAQ
问:映射表怎么扩展?
答:加一行源字段到目标名的映射。
问:覆盖型属性怎么办?
答:规则里加覆盖标记,命中即赋值不累加。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【语法算法】 元方法 __len 的触发就这一行: 对带 __len 的表做 t 操作时,Lua 调用 __len 而不是返…
【语法算法】 load 的编译本质就这一行: load 把字符串编译成函数——字符串里的代码被编译成可调用的函数——调用返回…
【语法算法】 error 的传播本质就这一行: error 抛出一个错误——第二个参数指定错误信息的层级——层级 2 表示把…
【语法算法】 pcall 的保护调用本质就这两行: pcall 把函数包在保护壳里执行——函数内部报错不会传播到外层——ok…
【语法算法】 元方法 __tostring 的触发就这一行: 对带 __tostring 的表做 tostring(t) 或…
【语法算法】 元方法 __call 的触发就这一行: 对带 __call 元方法的表做函数调用 t(...) 时,Lua 不…