在Lua中拥有a,b = foo()是什么意思?

时间:2018-12-16 05:08:31

标签: lua

我已经在线搜索,找不到对此的解释。

以下是什么意思?

Local a,b = foo()

为什么有两个变量?

是不是

Local a= foo()

Local b= foo()

也是吗?还是?

有人可以提供用法示例吗?

2 个答案:

答案 0 :(得分:5)

在Lua中,一个函数可以返回多个值。例如,此函数返回两个值:

function returnThreeAndFive()
    return 3, 5
end

您可以使用所描述的语法将函数调用的结果加载到变量中。 (但是,如果希望变量是局部变量,则应将小写的“ l”表示“ local”,而不是大写的“ L”。)

local a, b = returnThreeAndFive()
print(a, b) -- Prints "3    5"

如果使用的变量多于函数返回的值,则Lua用nil填充变量。

local a, b, c = returnThreeAndFive()
print(a, b, c) -- Prints "3    5    nil"

相反,如果该函数返回的值比使用变量的值多,则仅捕获放入变量中的值。

local a = returnThreeAndFive()
print(a) -- Prints "3"

答案 1 :(得分:3)

这意味着foo返回两个值,它们分别进入a和b!因此,foo被调用一次,但是两个结果被存储到两个变量中。

请参阅https://www.tutorialspoint.com/python/string_startswith.htm,以获取更多参考。

语法有点奇怪,其他语言也会要求使用花括号,例如

( a, b ) = foo()

科特林也允许这样做。他们称之为破坏。