lua-users home
lua-l archive

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


On 02/23/2017 04:06 AM, Dirk Laurie wrote:
> I want `a.b.c.d.e`. I'm going to test for nil, and I don't care
> at what level the missing index is.
>
> 1.   x = a and a.b and a.b.c and a.b.c.d and a.b.c.d.e
> 2.   x = has(a,"b.c.d.e") with
> function has(a,idx)
>   local j,k = idx:match"([^.]+)%.(.*)"
>   if not k then return a[idx]
>   else return has(a[j],k)
>   end
> end
> 3, debug.setmetatable(nil,{__index=function() return nil end})
> x = a.b.c.d.e

This was my first issue in Lua that annoyed me. Traditional solution
(1.) with infinite "and a.b and a.b.c" hurts my feelings and fingers.

Finally I came to something like solution (2.) (but w/o recursion and
with names list in vararg "...").

Solution (3.) looks neat. Will try it.

-- Martin