我有一个问题,我需要调用一个带有可变参数的函数,我从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功能上获得2
和88
...
但是如果服务器发送"[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作为一个例子......但实际上我不知道有多少参数需要回调函数,我只有一个函数列表,需要使用可变数量的参数来调用它们我从服务器那里得到了。答案 0 :(得分:1)
如果表有间隙,则应明确指定要解压缩的索引范围:table.unpack(params, 1, table.maxn(params))
。这在lua 5.1.5中效果很好。