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 = "" href="http://mysite/api/service.asmx" target="_blank">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