Lua中的多个返回值

6
我之前遇到了这个问题。 对于一个多返回值函数。
fn=function() return 'a','b' end

调用

print(fn()) 返回 a b

但是调用

print(fn() or nil) 只返回 a

为什么?由于第一个调用成功了,所以or不应该有影响,对吧?

1个回答

5

引用自 Programming in Lua §5.1 – 多重返回值

Lua总是根据调用情况来调整函数的返回值数量。当我们将函数作为语句调用时,Lua会丢弃函数的所有返回值。当我们将调用作为表达式使用时,Lua仅保留第一个结果。只有在调用是表达式列表中的最后一个(或唯一一个)表达式时,才会获取所有结果。

在您的示例中,fn()的返回值被用作表达式(or运算符的左操作数),因此只有第一个值被保留。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接