子类继承父类的类变量。

我有一个父类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,它就有效,但这意味着我不能使用我的子类。

原文链接 https://stackoverflow.com/questions/2992767

点赞
stackoverflow用户394428
stackoverflow用户394428

当使用冒号调用方法时,第一个参数设置为“self”,所有其他参数都会被移位。如果你提供更多的代码,解决问题会更容易,但我认为这可能是问题的原因:

    local x = {
    new = function(o, t)
        print("1st Arg", o)
        print("2nd Arg", t)
    end
}

x.new("Hello World")
x:new("Hello World")

你能看到参数是如何被移位的吗?

2010-07-17 02:36:39