Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua 这个函数返回什么_Lua_Variadic Functions - Fatal编程技术网

Lua 这个函数返回什么

Lua 这个函数返回什么,lua,variadic-functions,Lua,Variadic Functions,我这样称呼它: function f(...) return ... end 范例 f() 但是 那么,f()返回什么呢 更新:不知道函数可以返回“void”,同时发现了此问题。关于类型的答案可能是此命令的输出: print(f()) -- echoes newline, same as print(), that is, no args t = {f()} -- same as t = {} 在本例中,它将打印: print(type(f())) 因此,需要一个值,但没有值。=>它

我这样称呼它:

function f(...)
  return ...
end
范例

f()
但是

那么,f()返回什么呢


更新:不知道函数可以返回“void”,同时发现了此问题。

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

print(f()) -- echoes newline, same as print(), that is, no args
t = {f()} -- same as t = {}
在本例中,它将打印:

print(type(f()))
因此,需要一个值,但没有值。=>它不返回任何内容(void)

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


关于赋值,如果没有值,Lua默认赋值为
nil
,它返回您调用它的所有参数

bad argument #1 to 'type' (value expected)
如果赋值的值小于变量的值,即

f() -- has no parameter, returns nothing
然后b和c都是零

另一方面,这一切都会起到一些作用:

local a, b = 3
local c

我发现Lua函数可以返回'nothing',甚至不能返回nil。在本例中,
f()
返回
nothing
。使用
nothing
(无赋值)会导致另一个函数调用(如
print(f())
或表构造函数(
{f()}
)中的参数为零


print(a)
回显为nil,因为
a
没有赋值,
print(任何名称)
也将回显nil。

函数始终返回值列表。函数可以有零个或多个返回语句,每个返回语句都返回零个或多个值的列表。如果函数结束时未执行返回语句,则返回一个无值列表。您已经看到了将值列表传递给另一个函数(打印),一个表构造函数({}),和(在您的问题中)一个返回语句。我对这个注释的补充是:调用函数时,堆栈上有函数参数。当函数返回时,堆栈上有结果。因此堆栈上可能有零值,“nothing”。在这种情况下,print不会输出任何值。
f()之后
call堆栈上有零值。然后该堆栈被传递到
print
call。“函数可以返回'void'”是(您认为
print
返回什么)和否(您可以始终在表达式列表中使用函数的结果;编译器无法知道函数返回什么),也许(函数不必每次调用都返回具有相同数值的列表)。我认为“void”不是一个很好的描述。
local a, b = 3
local 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