21

次のluaコードを試しています:

function test() return 1, 2 end
function test2() return test() end
function test3() return test(), 3 end

print(test()) -- prints 1 2
print(test2()) -- prints 1 2
print(test3()) -- prints 1 3

test3 が 1, 2, 3 を返すようにしたい

これを達成するための最良の方法は何ですか?

4

3 に答える 3

28

関数が返す値の数がわからない場合は、このようなことができます。

function test() return 1, 2 end
function test2() return test() end
function test3()
    local values = {test2()}
    table.insert(values, 3)
    return unpack(values)
end


print(test3())

これは以下を出力します:

1   2   3
于 2012-10-09T20:31:16.547 に答える
12
...
function test3()
    local var1, var2 = test()
    return var1, var2, 3
end

print(test3())
于 2012-10-09T20:14:45.757 に答える
5

リストの最後にある関数呼び出しでは、戻り値が切り捨てられないこともわかりました。引数の順序が重要でない場合、これはうまく機能します。

function test() return 1, 2 end
function test2() return test() end
function test3() return 3, test() end

print(test()) -- prints 1 2
print(test2()) -- prints 1 2
print(test3()) -- prints 3 1 2
于 2012-10-10T23:17:28.233 に答える