lua-users home
lua-l archive

Re: How to check if table index exist

[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

AltStyle によって変換されたページ (->オリジナル) /