Наследование переменных класса на подкласс - PullRequest
0 голосов
/ 08 июня 2010

У меня огромный кошмар с этими подклассами, и я не могу понять, почему это не работает.

У меня есть основной класс BODY с подклассом RECTANGLE.BODY имеет функцию SetWorld, которая выполняет следующие действия:

function BODY:SetWorld( worldnum )

    self.world  = worldnum

end

Теперь, если я сделаю это:

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

Значение self.world в функции SetWorld меняется на 1, но еслиЯ пытаюсь использовать self.world в другой функции в BODY, она всегда возвращает ноль.Почему это?Это работает, если я создаю новое ТЕЛО вместо RECTANGLE, но это означает, что я не могу использовать свой подкласс.

1 Ответ

0 голосов
/ 17 июля 2010

При использовании двоеточия для вызова метода первый аргумент задается как «self», а все остальные аргументы сдвигаются.Если бы вы предоставили больше кода, было бы легче решить проблему, однако, я думаю, что это может быть проблемой:

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

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

Видите ли вы, как смещаются аргументы?

...