这个函数返回什么?

function f(...)
  return ...
end

我这样调用它:

f()

例子:

a = f()
print(a) -- 回显 'nil',与打印 'nil' 相同

但是

print(f()) -- 回显换行符,与打印空参数相同
t = {f()} -- 与 t = {} 相同

所以,f() 返回什么?

更新:先前不知道函数可以返回'void',与此同时发现了这个http://lua-users.org/lists/lua-l/2011-09/msg00289.html

点赞
用户3885376
用户3885376

关于类型的答案可以通过这个命令的输出得知:

print(type(f()))

在这种情况下,它会打印:

bad argument #1 to 'type' (value expected)

因此,期望有一个值,但是没有值。 => 它返回 nothing(空)。

因此,拥有这个结果是正常的:t = {f()} <=> t = {}

关于赋值,Lua 在没有的情况下默认为 nil 值。

2014-08-25 00:20:31
用户779937
用户779937

它返回你调用它时的所有参数。

f() -- 没有参数,不返回任何值

如果你使用的变量比赋值的变量少,

local a, b = 3
local c

那么只有 b 和 c 是 nil。

另一方面,下面的代码会执行:

f(1) -- 返回 1
f(1, 2, 3) -- 返回 1、2 和 3
local t = {f(1, 2, 3)} -- table 包含值 1、2 和 3
2014-08-25 00:33:37
用户1307996
用户1307996

我发现 Lua 函数可以返回“nothing”,即使是 nil 也没有。在这种情况下,f() 返回 nothing。在另一个函数调用中(例如 print(f()))或在表构造函数中({f()}),使用 nothing(没有赋值)会导致传递零参数。

print(a) 显示 nil,因为 a 没有被赋值,print(any_name) 也会显示 nil。

2014-08-25 00:35:58