Syntax Lua元表-使用冒号语法调用函数
我有以下问题,有人能帮我吗Syntax Lua元表-使用冒号语法调用函数,syntax,lua,self,colon,metatable,Syntax,Lua,Self,Colon,Metatable,我有以下问题,有人能帮我吗 comp = {} comp.__index = function(obj,val) if val == "insert" then return rawget(obj,"gr")["insert"] end return rawget(obj, val) end comp.new = function() local ret = {} setmetatable(ret, comp) ret.gr = display.newGr
comp = {}
comp.__index = function(obj,val)
if val == "insert" then
return rawget(obj,"gr")["insert"]
end
return rawget(obj, val)
end
comp.new = function()
local ret = {}
setmetatable(ret, comp)
ret.gr = display.newGroup()
return ret
end
local pru = comp.new()
pru.gr:insert(display.newImage(“wakatuBlue.png”)
——这行代码可以工作,但我不想使用gr
属性访问insert方法,我想直接调用insert方法,而元表\uu index
函数可以工作
pru:insert(display.newImage(“wakatuBlue.png”)
——这行行不通,我有一个“插入(预期代理,得到零)”的参数不正确”
错误,这是我希望使用的方法\uu索引工作得很好;这是因为您上次的通话被解释为:
pru.insert(pru, display.newImage("wakatuBlue.png"))
鉴于您希望/需要:
pru.insert(pru.gr, display.newImage("wakatuBlue.png"))
你要么像这样称呼它,要么解释你想做什么。你想要这样的东西吗
comp = {}
comp.__index = function(obj,val)
if val == "insert" then
return rawget(obj,"gr"):insert(val)
end
return rawget(obj, val)
end
您应该在描述中提到代码是针对Corona SDK的。我想知道为什么错误是参数#-2为零,而它应该是
pru
,而不是零(只是不是代理)。这是因为Corona将代理检测为一个带有指向某些用户数据的字段\u Proxy
的表。如果将\u proxy={}
添加到pru
,您将得到一个不同的错误(“需要代理,得到表”)。