Lua中如何从多返回值函数中提取指定返回结果?
Lua 多返回值指定提取方法
你可以通过以下两种常用方式实现需求:
方法1:哑变量占位法
Lua支持多变量同时接收函数返回值,不需要的返回值可以用*惯例哑变量_*占位丢弃:
- 仅提取单个返回值(以hours为例,是函数的第3个返回值):
-- 前2个返回值用_占位丢弃,仅接收第3个 local _, _, hours = FormatSeconds(123456) print(hours) -- 输出:10
- 同时提取多个指定返回值(以minutes、seconds为例,是第4、5个返回值):
-- 前3个返回值用_占位丢弃,接收第4、5个 local _, _, _, minutes, seconds = FormatSeconds(123456) print(minutes, seconds) -- 输出:17 36
注:
_只是Lua社区约定的无意义占位变量名,没有语法强制要求,你也可以替换为其他无用变量名,只是用_可读性更高。
方法2:select 函数法
如果返回值数量多、数占位符麻烦,可以用Lua内置的select函数,语法为select(index, 多返回值),作用是返回从第index位开始的所有后续返回值(索引从1开始计数):
- 仅提取单个返回值:
-- 取第3个返回值,后续返回值自动丢弃 local hours = select(3, FormatSeconds(123456)) print(hours) -- 输出:10
- 同时提取多个连续的返回值:
-- 取第4、5个返回值 local minutes, seconds = select(4, FormatSeconds(123456)) print(minutes, seconds) -- 输出:17 36
内容的提问来源于stack exchange,提问作者nodecentral
相关产品推荐
相关产品推荐

