来看这样一段代码的输出结果
function f123()
return 1, 2, 3
end
function f456()
return 4, 5, 6
end
print(f123()) -- A
print(f456()) -- B
print(f123(), f456()) -- C
print(f123(), (f456())) -- D
-- output
-- 1 2 3
-- 4 5 6
-- 1 4 5 6
-- 1 4
有趣的是 C 这一行,f123() 只输出了一个 1 。
这个原理在 Programming in Lua 里有解释,文中称 Lua 的多返回值设计是 「An unconventional, but quite convenient feature」,看得我想骂人。

对于 D 行,加了括号之后就只返回一个返回值,Lua Reference Manual 3.4.10 、Lua Reference Manual 3.4.11 里也有说明。