Lua数组作为参数,其中包含null。

我有一个问题,我需要调用一个带有变量参数的函数,这些参数来自一个Web服务...因此例如:

我有一个函数:

function MyPrint(param1, param2)
   print(param1, param2)
end

我将此函数保存在回调数组中:

callback[1] = MyPrint

我从服务器获取参数:

params = "[2, 88]" --> JSON from server

我做:

params = json.decode(params)
-- so
-- params[1] = 2
-- params[2] = 88

我尝试将这些参数作为以下内容传递给我的回调:

pcall(callback[1], unpack(params))

我在MyPrint函数上得到了288...

但是如果服务器发送"[null, 88]",则两个值都为nil...我已经阅读到unpack函数有null值问题...但是...我如何调用callback[1]带有一些null值?

有没有一种直接将参数数组传递给函数而不需要解包的方法?

编辑:我创建了MyPrint作为例子...但实际上我不知道回调函数需要多少个参数,我只有一个函数列表,并且需要使用从服务器获得的可变数量的参数来调用它们。

点赞
用户4850610
用户4850610

如果一个表格中存在空缺的索引值,你应该明确指定索引范围来进行解包操作:table.unpack(params, 1, table.maxn(params))。这在 Lua 5.1.5 中效果很好。

2015-06-06 17:25:14