我对这些子类有一个巨大的噩梦,我无法弄清楚为什么这不起作用。
我的主类BODY有一个子类RECTANGLE。 BODY有一个名为SetWorld的函数,它执行以下操作
function BODY:SetWorld( worldnum )
self.world = worldnum
end
现在,如果我这样做:
rect = RECTANGLE:new()
rect:SetWorld(1)
在SetWorld函数中,self.world的值更改为1,但如果我尝试在BODY中的另一个函数中使用self.world,则它总是返回nil。为什么是这样?如果我创建一个新的BODY而不是RECTANGLE,它可以工作,但这意味着我不能使用我的子类。
答案 0 :(得分:0)
使用冒号调用方法时,第一个参数设置为“self”,所有其他参数都被移位。如果您提供了更多代码,则更容易解决问题,但是,我认为这可能是问题所在:
local x = {
new = function(o, t)
print("1st Arg", o)
print("2nd Arg", t)
end
}
x.new("Hello World")
x:new("Hello World")
你看到这些论点是如何转变的吗?