lua-users home
lua-l archive

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


When loading a large untrusted table, I would setmetatable of nil, witch saved a lot of code to checking nil.

Here is a simple implementation: https://github.com/sumneko/lua-without-check-nil/blob/master/without-check-nil.lua

 

--- sumneko

 

发件人: Aidar Kamalov
发送时间: 20191120 13:30
收件人: Lua mailing list
主题: Re: How to check if table index exist

 

Thank you, Sergey

 

пн, 18 нояб. 2019 г. в 19:51, Sergey Kovalev <kovserg33@gmail.com>:

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


 

--

Aydar A. Kamalov