Lua中的多个返回值

时间:2013-11-14 02:08:44

标签: lua

早些时候遇到这个问题。 对于多重返回值函数

fn=function() return 'a','b' end

电话

print(fn())返回a b

但是电话

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

为什么呢? or因为第一次通话成功了所以不应该重要吗?

1 个答案:

答案 0 :(得分:5)

引自Programming in Lua §5.1 – Multiple Results

  

Lua总是将函数的结果数量调整为调用的情况。当我们将函数作为语句调用时,Lua会丢弃函数的所有结果。 当我们使用调用作为表达式时,Lua只保留第一个结果。只有当调用是表达式列表中的最后一个(或唯一的)表达式时,我们才能得到所有结果。

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