我正在尝试向现有的用户数据添加一个方法,如下所示,但这给我带来了一个错误。
local userData = luajava.newInstance("Objects.Block") --creates a userdata from a Java class
userData.newMethod = function()
-- Do stuff
end
我在网站上找到了这个示例,但它也不起作用
local userData = luajava.newInstance("Objects.Block")
local mt = getmetatable(userData)
mt.__index.newMethod = function()
-- Do stuff
end
是否有一种可行的方法可以从 Lua 向现有用户数据添加方法/函数
最佳答案
如果用户数据已经有一个元表,其中一个表分配给 __index 字段,那么您发布的第二种方法将起作用。出于安全原因,元表不能从 Lua 分配给用户数据。因此,您必须从 Java 绑定(bind)代码中为用户数据分配一个元表。
lua_newuserdata(L, SOME_SIZE);
luaL_newmetatable(L, "userData.mt");
lua_setmetatable(L, -2);
如果元表还没有 __index 表,则创建一个。
local mt = getmetatable(userData)
mt.__index = {
newMethod = function()
print('It works!')
end
}
关于java - 向用户数据添加方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6360620/