从函数中获取多个值而无需在LUA中创建变量

从函数中获取多个值而无需在LUA中创建变量,lua,love2d,Lua,Love2d,有没有办法从一个函数中获取多个值而不为其创建变量 local major, minor, revision, codename = love.getVersion() -- Get current LÖVE version as a string. 因此,我们将使用只返回所需值的内容,而不是生成四个不同的变量(或数组) get( love.getVersion(), 0 ) -- Will return the first value (major). 我在某个地方读到,我可以使用方括号,并

有没有办法从一个函数中获取多个值而不为其创建变量

local major, minor, revision, codename = love.getVersion() -- Get current LÖVE version as a string.
因此,我们将使用只返回所需值的内容,而不是生成四个不同的变量(或数组)

get( love.getVersion(), 0 ) -- Will return the first value (major).

我在某个地方读到,我可以使用方括号,并尝试了
love.getVersion()[1]
,但上面写着“尝试索引一个数值”。

这是函数签名:[它只返回多个值,如果要达到您所要求的效果,可以使用getVersion的包装器,让lua表以如下方式或数组格式返回

local function getVersion()
 local meta_data = {minor_version = "0.1", major_version = "1"}
 return meta_data
end

local res = getVersion()
print ("minor_version: ", res['minor_version'])
print ("major_version: ", res['major_version'])

为了举例说明,我们假设
love.getVersion()
的定义如下:

函数love.getVersion()
返回1,2,3,“四”
结束
使用
选择(索引,…)
: 如果
index
是数字,则
select
返回
index
的参数索引后的所有参数。请考虑:

print(“A:”,选择(3,love.getVersion())
本地版本=选择(3,love.getVersion())
打印(“B:,修订版)
产出:

A:  3   four
B:  3
C:  four
D:  1
E:  2
如有疑问-

使用表包装器: 您已经提到尝试
love.getVersion()[0]
。差不多就是这样,但首先需要将返回的值包装到实际的表中:

localall\u of_them={love.getVersion()}
打印(“C:,全部[4])
产出:

A:  3   four
B:  3
C:  four
D:  1
E:  2
如果您想在一行中完成这项工作(本着“不创建变量”的精神),您还需要将表格用括号括起来:

print(“D:,({love.getVersion()})[1])
产出:

A:  3   four
B:  3
C:  four
D:  1
E:  2
使用
变量:
来自其他语言,您可以通过
\uuu
分配您不感兴趣的值(没有人会注意到我们创建了一个短平线变量),如:

local,minor=love.getVersion()
打印(“E:,小调)
产出:

A:  3   four
B:  3
C:  four
D:  1
E:  2

请注意,我在示例中跳过了以下所有
\uuu
(不需要
local\uuu,minor,\uu,\u
)。

我认为您可以对不需要的值使用下划线。正如在
local major,\uuu,\u=love.getVersion()
local minor=select(2,love.getVersion())
太棒了!我甚至没想到会有这样详细的答案。绝对尊重!顺便说一句,表格包装方法非常慢。@younyokel,哦,是的,但它仍然是一个有效的选项:)