Lua数组作为参数,为null

时间:2015-05-28 22:47:20

标签: lua

我有一个问题,我需要调用一个带有可变参数的函数,我从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函数有空值的问题......但是......如何我可以使用callback[1]null来调用<?php # step 1: add an id attribute ('id' => 'anyFormName') to the array options # step 2: add an onchange envent to the dropdown ('onChange'=>'document.getElementById("anyFormName").submit();') echo $this->Form->create('Product', array('controller'=>'products', 'action'=>'shipping_area', 'id' => 'anyFormName')); echo $this->Form->input('area', array('options' => array('1' => 'Within Malaysia', '2' => 'International'), 'empty' => 'choose area', 'label' => 'Choose shipping area', 'onChange'=>'document.getElementById("anyFormName").submit();')); //echo $this->Form->end('Save');?> 吗?

有没有办法将参数数组直接传递给函数而无需解压缩?

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

1 个答案:

答案 0 :(得分:1)

如果表有间隙,则应明确指定要解压缩的索引范围:table.unpack(params, 1, table.maxn(params))。这在lua 5.1.5中效果很好。