从函数中获取多个值而无需在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,哦,是的,但它仍然是一个有效的选项:)