当我将unpack()作为lua的函数参数调用时会发生什么?
这是我看到的:
> function test(...) >> for i,v in ipairs({...}) do >> print(v) >> end >>end -- This is expected > test(unpack({1,2})) 1 2 -- When I mix unpack and regular arguments -- What happened to 2? > test(unpack({1,2}),3) 1 3 -- What happened to 3? > test(unpack({}),3) -- When I put regular args before unpack,everything is fine: > test(1,unpack({2,3})) 1 2 3 当我将unpacked参数与常规args混合时,结果很奇怪.你能解释一下在幕后发生的事情吗? 解决方法
我引用Lua的参考:
如您所见,您的解包调用减少为一个返回值,因为它既不是您传递给测试的表达式列表中的最后一个也是唯一一个表达式: test(unpack({1,3) 在另一种情况下,答案很简单: test(unpack({}),3) 传递给test的第一个值是nil.因此,i,v in ipairs({…})do end将无效,因为你的表的第一个值是nil,因为unpack({})返回nil
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |