接收多返回值时变量个数与返回值个数对不上:变量多于返回值,多出的变量安静填 nil;返回值多于变量,多出的被截断丢弃——两侧都不报错,全靠自己对齐。错误场景:
local function stats()
return 100, 20, 3
end
local kills, deaths, assists, gold = stats()
print(kills, deaths, assists, gold)
输出 100 20 3 nil——gold 没有对应返回值,安静填 nil,账目差一截。
接收个数与返回值个数对齐;个数不确定时用表收集。规范写法。示例代码如下:
local packed = { stats() }
print(#packed, packed[1], packed[3])
输出 3 与 100、3——表接收完整保留所有返回值,个数动态也不丢。
三步验证:三返回值配三变量,一一对应全拿到;配四变量复现末位 nil;用 { stats() } 表收集验证个数与内容完整——三种接收方式各有用途。
接收列表中间插表达式会截断多返回值——只有末位的调用才完整展开。示例代码如下:
print(stats(), "后面截断")
print((stats()))
print(stats())
第一行输出 100 后面截断(截成单值),第二行 100(括号同样截断),第三行 100 20 3——末位完整展开的规则记牢,返回值不白算。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【语法】 一、隐蔽陷阱 打印 5 层星号金字塔,每层比上层多 2 颗星、左侧空格少 1 个——空格与星数的数量关系不清晰时,…
【游戏】 一、业务场景 帮会下午没活动,成员上线点个卯就走。狩猎场上线:每晚 8 点开门 30 分钟,场内刷固定猎物,猎杀计…
【游戏】 一、业务场景 帮战开打才发现帮会没有物资储备,临时收捐谁也不交。粮仓上线:平日捐粮入库记账,帮战期间按配给开仓领补…
【语法】 一、隐蔽陷阱 验证"任一整数的立方都能写成连续奇数之和"时,起点从 1 开始逐个试,n 稍大就长跑几百步还没对上—…
【游戏】 一、业务场景 帮会大厅一面空墙,有人提议留言,结果聊天区刷屏根本留不住。题字墙上线:花 100 帮贡刻一句题字永久…
【游戏】 一、业务场景 灯谜活动上线半小时谜底被解题工具全数搜出——谜面与谜底同放在一份客户端配置里,读表即得。服务端重构:…