将数组作为参数列表传递给lua。

今天我正在使用Lua这种对我而言比较"老旧"的编程语言,发现你可以像这样将参数作为数组传递:

function foo(someting,...)
    local arrayofargs = arg
    -- code here
end

现在,我很感兴趣。能否以"其他方式"传递数组,而不是作为数组,而是作为参数列表,像这样:

function bar(a1,a2)
    print(a1+a1)
end

function foo(someting,...)
    local arrayofargs = arg
    bar(arg)
end

是的,你不能这样做。但我是否可以以某种方式做到这一点?

点赞
用户107090
用户107090

如果你正在谈论旧版本的 Lua 自动提供一个包含可变参数函数接收到的所有参数的 arg,那么你可以在函数开始时使用 local arg={...}

如果你想将数组转换为列表,则可使用 table.unpack

因此,您的示例代码将是:

function foo(someting,...)
    local arg={...}
    bar(table.unpack(arg))
end

不过这没有太多意义,因为你可以这样做,更加明确和简单:

function foo(someting,...)
    bar(...)
end
2014-03-10 18:36:52