just a little inconvenient when used with:
for k, v in pairs(obj) do … end
the keys in the realobj will be ignored. It's a known issue:
Why don't pairs() and ipairs() obey an __index metamethod http://lua-users.org/lists/lua-l/2007-09/msg00374.html
/hz
Thanks.
had implemented as this: -- setmetatable(obj, { __newindex = function (tab, k, v) print('setting: ' .. k .. ' -> ' .. tostring(v)) rawset(tab, k, v) end })
which will only trigger the first setting for a new key: self.data['foo'] = 'bar' self.data['foo'] = 'next-bar’
— any way, nice solution, thanks.
is there a way to intercept the settable_event?
want to implement kind of getter/setter observer for a table (similar to the KVO in Cocoa). Is there a way to do this in pure lua?
local realobj = {} local obj = setmetatable({}, { __index = realobj, __newindex = function(self, k, v) -- it's settable event for obj realobj[k]=v end, })
|