0
我有一個問題,我要打電話與我從web服務獲得可變參數的函數...參數,以便例如:Lua的數組與空
我有一個函數:
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))
我2
和88
上MyPrint功能...
但是,如果服務器發送"[null, 88]"
,我得到了nil
這兩個值...我認爲unpack
函數有空值的問題...但隨後...我怎樣才能撥打callback[1]
與一些null
值?
有沒有辦法將參數數組直接傳遞給函數而不解壓縮?
編輯:我創建了MyPrint作爲一個例子......但我真的不知道有多少參數需要回調函數,我只有一個函數列表,我需要用可變數量的參數調用它們,從服務器獲得。
http://pastebin.com/10UuPc6j - 在這裏工作。你的lua版本是什麼?拆包前「params」的價值是什麼?另外,請參閱[這裏](http://stackoverflow.com/questions/1672985/lua-unpack-bug) – Diego
'json.decode'應該在返回的表中創建額外的字段'n'來存儲參數的數量。然後'your_function(解包(params,1,params.n))'將解決問題。 –
@EgorSkriptunoff沒有「n」字段...... print(params.n)' - > nil – Pipe