lua-users home
lua-l archive

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


The solution we use is to wrap each script file inside 'function Main() ... end; Main();'. Then you can declare all functions as 'local' inside that scope. You can also use 'function self:Main() ... end;', and declare all functions inside as 'self:SomeFunction', adding those functions to the 'self' object, if you have one... This doesn't place the functions in the global environment, making function names reusable.
 
Cheers,
 
Goran.
 
--
The absolute law of the universe: everything depends
 
 
----- Original Message -----
Sent: Friday, 05 May, 2006 15:52
Subject: multiple lua files with same-named functions

Greetings All,
 
I am having a bit of an issue with the system I've made.
 
I have a single lua_State with a number of registered C functions in it.
 
whenever I want to execute another script file, I make a new co-routine (from C),
I load the lua code into this new co-routine, and then call a function on it.
 
the issue is that all of these different script files have functions of the same name,
and it seems that if i have previously loaded a script with the function 'onCreate' in it,
and I load a new script which doesn't have an onCreate function (yet it tries to call it) it will find
the previously loaded onCreate function, I would rather that it say onCreate doesn't exist (since it is not in the script I've loaded),
but it seems whatever code i load all of the functions get stored into the global state, is this right?
 
and if so how can I solve it? a brute force idea is to clear all the functions from the global state before loading a new script
but that sounds awful =/
 
any info is appreciated, thanks!
 
Raymond Jacobs
Owner,
Ethereal Darkness Interactive