Return 一个函数的多个值,并在 Lua 中分别访问它们?

Return multiple values to a function, and access them separately in Lua?

如果我有一个 returns 多个值的函数,我如何分别访问这些值?像 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(????)

在这方面,愿望函数的功能类似于 tables,因此我可以输入类似 print(angles.x)

的内容

此外,我知道代码看起来确实多余,但它实际上是我实际使用的代码的简化版本。对不起,如果那样的话不太有意义。

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

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

最明显的是

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

如果你特别想要第一个值

local x = ( angles() )
-- `local x = angles()` would work too. Lua discards excess return values.
print(x)

或者,可读性稍差

print((angles()))

您还可以 return 函数中的 table,或使用标准模块 table 将 return 值打包成一个。

local vals = table.pack(angles())
print(vals[1])

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

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

输出:

0
90
180

select() 调用 需要放在括号中 以便 return 个单独的条目而不是 全部在给定的偏移量之后.