You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Lua的if条件中获取函数的第二个返回值?

问题解答

你写的这段代码没法正常工作,原因是Lua对多返回值的处理规则:当函数调用作为索引、赋值等单值场景的表达式时,只会保留第一个返回值。所以a()[2]实际上是取了函数a返回的第一个值1,然后尝试访问它的索引2,这显然会触发错误(数字类型没有索引)。

下面给你几种正确的实现方式:

方式1:用变量接收,忽略不需要的返回值

这是最直观、可读性最高的写法:

local function a()
    return 1, true
end

local _, second_val = a() -- 用下划线`_`忽略第一个返回值
if second_val == true then
    print("yes")
end

方式2:用select函数直接提取第二个返回值

select(n, ...)可以直接取出可变参数里的第n个值,函数的多返回值会被当作可变参数传入:

local function a()
    return 1, true
end

if select(2, a()) == true then
    print("yes")
end

方式3:把返回值转为table后索引访问

把函数调用包裹在大括号里,会自动将所有返回值转为table的元素,之后就能通过索引访问第二个值:

local function a()
    return 1, true
end

if {a()}[2] == true then
    print("yes")
end

内容的提问来源于stack exchange,提问作者Dadkhah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 08:55:15