将类变量继承到子类

时间:2010-06-07 20:11:32

标签: oop class lua subclass

我对这些子类有一个巨大的噩梦,我无法弄清楚为什么这不起作用。

我的主类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,它可以工作,但这意味着我不能使用我的子类。

1 个答案:

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

你看到这些论点是如何转变的吗?