Lua函数可返回多个值,学员用固定变量数接收时如果变量少于返回值,多余返回值被静默丢弃;如果变量多于返回值,多余的变量为nil。select('#',...)是计数的唯一正解。错误写法:
local function multi()
return "数据", 200, "正常"
end
local function demo()
local n = select("#", multi())
sendmsg(nil, 1, "返回" .. n .. "个值")
end
select("#", ...)计数不受nil截断影响。示例代码如下:
local function multi()
return "数据", 200, "正常"
end
local function demo()
local n = select("#", multi())
sendmsg(nil, 1, "返回" .. n .. "个值")
end
本篇的新技术点是"select计数不受nil截断影响"。
三步验证multi返回3个值;交换接收顺序确认值错位;对照#打包验证截断。
示例代码如下:
local t1 = {multi()}
local t2 = {multi(), multi()}
t1长度3、t2长度4——非末位调用截断为一个返回值。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
设计初衷 攻城战阵亡只有损失:装备掉落、耐久磨损——牺牲没有补偿,行会的伤亡成本全由个人承担,指挥不敢打硬仗。抚恤金设计:攻…
设计初衷 攻城战一触即发,盟友帮会口头答应协防却总是人没到:跨帮支援没有调度与结算机制,人情协防全凭自觉。协防系统设计:盟约…
底层原理 一张地图上 500 棵同款树,每棵存完整的模型数据——重复数据存 500 份。享元模式把不变的部分(模型、贴图)抽…
底层原理 技能系统按"元素×形态"组合:火球冰球乘单体群攻——每加一种元素或一种形态,组合数量乘性增长(4 元素 3 形态 …
设计初衷 稀缺产出(强化石、晋级材料)的供需错位:产出季价格崩盘、断供季价格飞天——剧烈波动伤害生产者与消费者两端。期货交易…
业务场景 驻地巡逻 AI 只会沿固定路线走:玩家摸清路线后绕行如入无人之境。傀儡机关封装:机关傀儡按"巡逻、警戒、袭扰"三态…