lua-users home
lua-l archive

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

i'm new to lua. i have this code:

P = { c = 0 }

function P:run (o)
	if o == nil then
	   o = {} setmetatable(o, self) self.__index = self
	   self.c = 999
	return o

for i=1,2 do
	v  = P:run(v)

so, the object uses a global (v) to determine is it's been initialized or not. note on initialization it sets the value of c to 999. the problem is that if i execute this script twice in a row with 2 do file calls, ie,

	 lua_dofile(luavm, "P.lua");
	 lua_dofile(luavm, "P.lua");

then v persists, but c gets reverted to 0. (or null if i remove the c=0 line). it's as if the object does not persist, even though its handle remains. i thought it has to do with garbage collection. i tried to force collection in a loop to see if the object gets destroyed, but it does not. can someone explain what's going on ? i would like the object state to be kept so that whatever is there in the object has the same values accross dofile calls.

On the road to retirement? Check out MSN Life Events for advice on how to get there!