Lua中的多个返回值

Ant*_*mas 6 lua

早点进入这个问题.用于多重返回值功能

fn=function() return 'a','b' end
Run Code Online (Sandbox Code Playgroud)

电话

print(fn()) 回报 a b

但电话

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

为什么?or因为第一次通话成功对不对?

Yu *_*Hao 5

引用Lua§5.1中的编程 - 多重结果

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

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