[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: event handler for table initialization
- From: Javier Guerra Giraldez <javier@...>
- Date: Tue, 21 Sep 2010 11:54:29 -0500
On Tue, Sep 21, 2010 at 2:47 AM, Nilson <nilson.brazil@gmail.com> wrote:
> Using function calls and tables arguments to describe structures like
> the example below
>
> Computer{
> brand = 'XYZ';
> Motherboard{
> Processor{type = 'Pentium'};
> Memory{size = '512MB'}
> };
> Harddisk{capacity='120GB'}
> };
>
> will generate function calls in an order completely different of reading order.
> In the example: Processor, Memory, Motherboard, Harddisk, Computer.
when you want to reorder things in time, the usual answer is to pass
around closures. in your case, the easiest would be to write your
functions as:
local function force_futures (t)
for k,v in pairs(t) do
if type(v) == 'function' then
t[k] = v()
end
end
end
function Memory(t)
return function ()
-- do some work with 't'
--......
force_futures(t)
return t -- could be a different object
end
end
function Motherboard(t)
return function ()
-- do some work with 't'
--......
force_futures(t)
return t -- could be a different object
end
end
--
Javier