lua-users home
lua-l archive

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


Hi all,

I mentioned this in another thread but the idea has been festering in my mind over the last few days.  The idea is simply that an object’s metatable can have _assign and _deassign methods which are invoked when that object is (de)assigned to/from a variable, for example:

do
 f = io.open(‘a’) — __assign called on result of io.open(‘a’)
 local x = f — f.__assign() called
 local y = x — x.__assign() called

 y = ’something else’ — y.__deassign() followed by (’something else’).__assign()
end — implicit x.__deassign() and y.__deassign() because they are going out of scope.

It seems to me that this would be a much more general way to implement <toclose> and other similar mechanisms and I’d really like to know if it’s been considered before, and if so what the arguments for and against were.

Regards,
Chris
—
Chris Smith <space.dandy@icloud.com>