将多个值返回给函数,并在Lua中单独访问它们?

时间:2015-05-26 21:52:37

标签: lua

如果我有一个返回多个值的函数,我该如何单独访问这些值?像桌子[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)

的内容

另外,我知道代码看起来真的很多,但它实际上是我实际使用的更简化的版本。对不起,如果这样做的意义不大。

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

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

最明显的是

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()))

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

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

答案 2 :(得分:0)

另一种(而不是一次全部)单独访问它们的方法是:

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

输出:

0
90
180

select()调用需要放在括号中,以便返回单个条目,而不是返回给定偏移量之后的所有