lua-users home
lua-l archive

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


That's how I thought it should work, so if for the sake of an example I have something like this:


    int luaopen_array (lua_State *L) {
      luaL_newmetatable(L, "LuaBook.array");
    
      lua_pushstring(L, "__index");
      lua_pushvalue(L, -2);  /* pushes the metatable */
      lua_settable(L, -3);  /* metatable.__index = metatable */
    
      luaL_openlib(L, NULL, arraylib_m, 0);
    
      luaL_openlib(L, "array", arraylib_f, 0);
      return 1;
    }

(from online reference here: http://www.lua.org/pil/28.3.html)
how would I add a method on the lua side?
getmetatable(LuaBook.array) throws a attempt to index global 'LuaBook' (a nil value)
what am I missing?

On Thu, May 3, 2012 at 1:38 PM, liam mail <liam.list@googlemail.com> wrote:
On 3 May 2012 18:26, steve donovan <steve.j.donovan@gmail.com> wrote:
> On Thu, May 3, 2012 at 5:46 PM, Andrew Budd <andrew.budd@gmail.com> wrote:
>>  What I would like to do is add additional methods to those metatables from
>> Lua.
>
> Totally possible - it's a table, and you can add things to it.
>
>> mt = getmetatable(io.stdout)
>> mt.read2 = function(self) return self:read(),self:read() end
>

Unless it is specifically prevented using the "__metatable" key.[1]

Liam
[1] pedantic and just for completeness.