[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: multiple global contexts
- From: Peter Shook <pshook@...>
- Date: Wed, 25 Jun 2003 11:44:41 -0400
Dylan Cuthbert wrote:
Of course now I have a massive overhead on all uses of "=" to variables
within object :-(
Hi Dylan,
Note that the overhead is only when *new* keys are assigned to the
table. So unfortunately if you assign another value to willy3 it won't
work the way you want it to. Try this:
object.nadgers.willy3 = function() bum = 90 end
object.nadgers.willy3 = function() bum = 90 end
You can also use nicer syntax in Lua 5.0:
function object.nadgers.willy3() bum = 90 end
A Lua function will have the same environment as where it was defined,
so I recommend implementing some kind of package system (See the list
archive, I posted some references not long ago).
This will also help you protect the default globals.
Try something like:
local function cache(tab, name)
local value = _G[name]
rawset(tab, name, value) -- cache value
return value
end
function loadpkg(filename)
local P = {}
setmetatable(P, {__index = cache})
-- setmetatable(P, {__index = _G}) -- if you don't want cache
local f = assert(loadfile(filename))
setfenv(f, P)
return P, f()
end
- Peter Shook