[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: metatable and closure
 
- From: Thomas Lavergne <thomas.lavergne@...>
 
- Date: Wed, 17 Apr 2002 19:18:08 +0200
 
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/