lua-users home
lua-l archive

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


2012年4月7日17:43 Marc Balmer <marc@msys.ch>:
>> Why can't you just make the callback a closure, and reference "data"
>> directly from it (without making it a parameter)?
>
> I am using it in a loop, e.g. like this:
...
>                        activateCallback = Callback {
>                                item[2], -- the function
>                                item[3]  -- data to be passed
>                        }
...
> So I think a closure would not work here?

Not sure why not (though maybe I misunderstand your problem).

A closure captures bindings, and Lua's for loop creates new bindings
for the loop variables on each entry into the loop body.

So a closure like:

   activeCallback = function () item[2] (item[3]) end

should do the right thing.

-miles

-- 
Cat is power.  Cat is peace.