2010-06-07 100 views
0

我对这些子类有一个巨大的噩梦,我不知道为什么这不起作用。类变量对子类的继承

我有一个子类RECTANGLE的主类BODY。机身拥有一个名为SetWorld功能,并以下

function BODY:SetWorld(worldnum) 

    self.world = worldnum 

end 

现在,如果我这样做:

rect = RECTANGLE:new() 
rect:SetWorld(1) 

值self.world更改为1在SetWorld功能,但如果我尝试使用self.world在BODY的另一个函数中总是返回nil。为什么是这样?如果我创建一个新的BODY而不是一个RECTANGLE,它就可以工作,但这意味着我不能使用我的子类。

+0

请包括您的完整代码以及您正在使用的类实现(有几个)。 – kikito 2010-07-02 09:58:11

回答

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") 

你看到的参数是如何转移?