lua-users home
lua-l archive

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


> >I'd like the math functions to be put into a global table called "math". 
> >(Or maybe under the path system.math, etc)
> 
> before calling mathlib_open, set up a "setglobal" tag method to redirect
> all function definitions.
> 
> something like this:
> 
>   settagmethod(tag(nil),"setglobal", function (x,v) math[x]=v end)
> 
> after you're done, restore the old "setglobal" tag method.
> if you want to keep the global names, add "rawsetglobal(x,v)" to the code above.

But the that will only get called when a global is set to "nil".
And according to the Lua documentation, it cannot be set for other data types:

   4.8 Tag Methods
   ...
   ``setglobal'':
   called whenever Lua assigns to a global variable. 
   This method cannot be set for numbers, strings, and tables and 
   userdata with default tags.


I need a setglobal fallback that will get called regardless of type. 
Can Lua do that?

Steve