|
Tim Conkling wrote:
Are metatables appropriate in this situation? I was thinking of creating a generic "table-protecting" metatable that raises errors for index, newindex, and call events, and then installing this as the metatable for each original entity table that is loaded. Can I create one table for this purpose and use it as the metatable for each table that I need to protect, or do I need to make copies of this table? Also, is there a better way to protect against this sort of behavior in scripts?
Hi Tim,index and newindex events cannot save you from the MySprite.speed versus self.speed error unless you've set MySprite to nil.
Creating one metatable is fine. Many tables can share the same metatable. You might consider starting your script with: local MySprite = {} and then end it with: return MySpriteIf you load the script with luaL_loadfile, you'll get a function that will return a new anonymous 'MySprite' table each time it is called. This way there is no need for copying, and no need for metatables, and your problem is moot.
- Peter