lua-users home
lua-l archive

metatable and closure

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


I have a strange problem :
'foo' is a userdata, the 'gettable' method in his metatable was set to a 
c function. When I do 'foo.bar' the gettable method return a c closure 
with upvalue.
The object is to call bar : 'foo.bar()' and all method of foo use the 
same c function but with different upvalues.
But is there a difference between theses two lua codes :
"f = foo.bar; v = f()" and "v = foo.bar()"
I've made test with theses two call and obtain different result and I 
don't understand why.
I suppose it's possible the bug was in the 'gettable' method, I use this 
code :
{
 lua_pushcclosure(L, lune_call, 2);
 return 1;
}
So it return a c function with two upvalue : my userdata and the 
function name, lune_call make the stuff.
But I'm not sure I can use these value on the stack for making upvalues.
Thanks
-- 
Thomas Lavergne "Le vrai rêveur est celui qui rêve
 de l'impossible." (Elsa Triolet)
thomas.lavergne@laposte.net 
d-12@laposte.net ICQ:#137121910 http://assoc.wanadoo.fr/thallium/

AltStyle によって変換されたページ (->オリジナル) /