lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


function ats(a,def)
    return function(...)
        for _,v in ipairs(table.pack(...)) do
            if type(a)~='table' then return def end
            a=a[v]
        end
        return a
    end
end

Code = ats(ent,"201")(1,1,1,1)
Status = ats(ent)(1,1,3,1,17,1) or "Unknown"

пн, 18 нояб. 2019 г. в 07:42, Aidar Kamalov <aidar.kamalov@gmail.com>:
>
> Hello,
>
> I have a table generated by luasoap.
> function trackNum(tracknum)
>     local ns, meth, ent = client.call {
>         url = "http://mysite/api/service.asmx";,
>         soapaction = "http://mysite.org/Track";,
>         method = "Track",
>         namespace = "http://mysite.org/";,
>         entries = {
>             {
>                 tag = "TrackNo", tracknum,
>             },
>         }
>     }
>     local Code = ent[1][1][1][1] or "201"
>     local Status = if ent[1][1][3][1][17][1] or "Unknown"
>     return Code, Status
> end
>
> so, I don't know how many indexes will be in answer (btw, is it possible to address by names? for example ent['Code']) and I want to escape  error attempt to index a nil value (field '?').
>
> What the best way to do it? something like try/except int python?
>
> --
> Aydar A. Kamalov