Lua unpack()混乱的参数 [英] Lua unpack() messing arguments
本文介绍了Lua unpack()混乱的参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这个测试功能,可以简单地打印传递给它的值
I have this test function which simply prints values passed to it
function test1(...)
for k, v in ipairs(arg) do
print(v)
end
end
function test2(...)
for k, v in pairs(arg) do
print(v)
end
end
-- GOOD behavior
test1(1, 2, 3, 4) -- produces 1 2 3 4
test2(1, 2, 3, 4) -- produces 1 2 3 4
-- BAD behavior
test1( unpack({1,2}), 3, 4) -- produces 1 3 4
test2( unpack({1,2}), 3, 4) -- produces 1 3 4 3
有人可以向我解释这种行为吗?
Can someone explain this behavior to me ?
推荐答案
此行为并非特定于unpack
.
Lua参考手册说:
This behavior is not specific to unpack
.
The Lua Reference Manual says:
函数调用和vararg表达式都可能导致多个值.如果将函数调用用作语句(请参见§3.3.6),则将其返回列表调整为零个元素,从而丢弃所有返回的值.表达式用作表达式列表的最后一个(或唯一)元素,则不进行任何调整(除非表达式用括号括起来)在所有其他情况下,Lua会将结果列表调整为一个元素,则丢弃第一个值以外的所有值,或者在没有值的情况下添加单个nil."
(我的重点)
这篇关于Lua unpack()混乱的参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文