o
- это просто пустая таблица, к ней нельзя применять метатаблицу, которая позволила бы получить доступ к функциям MovingObj
. Вы можете исправить это, применив метатаблицу во время вашей функции new
.:
MovingObj = {}
function MovingObj.new(o)
o = o or {}
local meta = {
__index = MovingObj -- when o does not have a given index check MovingObj for that index.
}
return setmetatable(o, meta) -- return o with the new metatable applied.
end
ball = MovingObj.new({type = "ball"})
function MovingObj:test()
print ("Test! I'm a " .. self.type)
end
ball:test()
Для этой функции new
также нет необходимости использовать синтаксис :
, мы не используем переменную self
.