lua-users home
lua-l archive

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


On Sat, Jan 05, 2013 at 05:48:22PM -0500, Javier Guerra Giraldez wrote:
> On Sat, Jan 5, 2013 at 3:01 PM, William Ahern
> <william@25thandclement.com> wrote:
> > Although, autovivification
> > is very nice in a configuration language, and Lua can't quite manage it,
> > unfortunately.
> 
> if i understand correctly, you mean the ability to write:
> 
> a.b.c = 5
> 
> and getting
> 
> a={}
> a.b={}
> a.b.c=5
> 
> or:
> 
> a={b={c=5}}
> 
> this is sometimes called "automagical tables", or tables on demand,
> and there's a simple implementation of this written long ago in the
> wiki: http://lua-users.org/wiki/AutomagicTables

I'm not sure that works like in Perl. It works for writing, but not reading
AFAICT. In the example above, in order to get a.b.c = 5 to work, evaluating
a.b must return a table. So would a.b.c if all you were doing was checking
the value. So in Lua a.b.c would return a table, instead of undef as in
Perl.

So get full autovivification, the expression evaluator has to know more
information about the full expression than is available to a metatable.