Lua中如何将多个值返回给函数并分别访问它们?

如果我有一个返回多个值的函数,我如何分别访问这些值? 类似于 table[i]

angles = function()
    x = function()
        local value = 0
        return value
    end

    y = function()
        local value = 90
        return value
    end

    z = function()
        local value = 180
        return value
    end

    return x(), y(), z()
end

在想要单独使用 x 值的同时保留它在函数 angles 中时,会出现问题。

print(????)

希望函数在这方面像表格一样工作,这样我就可以输入print(angles.x)

此外,我知道这段代码看起来非常冗余,但实际上它是我正在使用的更简化版本。如果这样更难理解,我很抱歉。

点赞
用户4937944
用户4937944
x, y, z= angles()
print (x,y,z)
x, y, z = angles()
print(x, y, z)

注:此代码块无需翻译,只需格式化即可。

2015-05-26 22:01:32
用户929510
用户929510

有几种方法可以做到这一点。

最明显的是:

local x, y, z = angles()
print(x)

如果你想要特别获取第一个值:

local x = ( angles() )
-- `local x = angles()` 也可以。Lua 会丢弃多余的返回值。
print(x)

或者,可读性稍差的是

print((angles()))

你也可以从函数中返回一个表,或者使用标准模块 table 将返回值打包为一个值。

local vals = table.pack(angles())
print(vals[1])
2015-05-26 22:39:01
用户2792852
用户2792852

另一种单独访问它们(正如问题的措辞所暗示的那样)而不是一次性访问它们的方法是这样的:

print((select(1,angles())))
print((select(2,angles())))
print((select(3,angles())))

输出:

0
90
180

select() 调用 需要括在括号内,以便返回单个项而不是 _给定偏移量之后的所有项_。

2019-10-27 11:51:59