这个函数返回什么

时间:2014-08-25 00:11:11

标签: lua variadic-functions

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

我称之为:

f()

实施例

a = f()
print(a) -- echoes 'nil', same as print(nil)

但是

print(f()) -- echoes newline, same as print(), that is, no args
t = {f()} -- same as t = {}

那么,f()会返回什么?

更新:不知道函数可以返回' void',同时找到此http://lua-users.org/lists/lua-l/2011-09/msg00289.html

3 个答案:

答案 0 :(得分:5)

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

f() -- has no parameter, returns nothing

如果您使用的值少于变量值,即

local a, b = 3
local c

然后,这将以b和c为零结束。

另一方面,这一切都会有所作为:

f(1) -- returns 1
f(1, 2, 3) -- returns 1, 2 and 3
local t = {f(1, 2, 3)} -- table with the values 1, 2 and 3

答案 1 :(得分:3)

关于类型的答案可能是此命令的输出:

print(type(f()))

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

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

所以,一个值是预期的,但是没有价值。 =>它返回(无效)。

因此,这是一种正常行为:t = {f()}< => t = {}

关于作业,如果没有值,Lua会默认指定nil值。

答案 2 :(得分:2)

我发现Lua函数可以返回'nothing',甚至不是nil。在这种情况下,f()会返回nothing。使用nothing(没有赋值)会在另一个函数调用中产生零参数(如print(f())或表构造函数({f()})。

print(a)回显为nil,因为a没有指定值,print(any_name)也会回显nil。