LUA的一些工具備份

table.unpack遇到的問題

做了箇中轉的服務, socket+json 傳遞數據,
通過 {...} 封裝不定參數然後 json.encode 傳遞到其他服務器,
然後其他服務器 json.decode之後再通過 table.unpack 解出之前 {...} 裏面的參數,
如果這裏是 table 還好,如果這裏面是 n 個整型數據的話,後面會多了個 .0
例如, 1 會被轉成 1.0,這會帶來一些麻煩。
調查了許久,發現不是 json 導致的,而是在 table.unpack 導致的,
所以根據網上找到的方法,重寫了一個 unpack 的方法以及一個判斷數組的方法,如下:


function util.unpack(t,i)
    i = i or 1
    if t[i] ~= nil then
        if type(t[i]) == "number" and t[i]%1 == 0 then
            t[i] = t[i] >> 0
        end
        return t[i],util.unpack(t,i+1)
    end
end

--檢查是否是數組類型
function util.checkArray(a)
    if type(a) ~= "table" then return false end
    local count = 0
    for k,v in pairs(a) do
        if type(k) ~= "number" then return false end
        count = count + 1
    end

    for i=1,count do
        if not a[i] and type(a[i]) ~= "nil" then return false end
    end

    return true
end
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章