在Lua中使用对象

我正在为Lua创建一个系统,以便我可以在其中拥有类和对象。我已经创建了对象,问题在于创建构造函数。

我的构造函数像这样:

a = MyClass:Create("Hello World!")

Create方法的参数是 ...,它将其传递给构造函数方法(OnStart)。我在Create方法中可以很好地读取参数,但是当调用OnStart时,参数不知何故变成了nil,而不是"Hello World!"。

我的代码:

Object = { }

function Object:Create(...)
    local instance = { }
    setmetatable(instance, self)
    self.__index = self
    instance.Type = Object

    -- 现在我们可以调用构造函数。
    local arg = { ... }
    instance.OnStart(table.unpack(arg))

    return instance
end

function Object:OnStart(msg)
    print(msg)
end

test = Object:Create("Hello World!")
print(test:ToString())

一些msg参数不知何故最终变成了nil...

点赞
用户2905148
用户2905148

看起来我找到了为什么它没起作用的原因,需要更改的细节是第 9 行。它需要更改为 instance:OnStart 而不是 instance.OnStart

2014-10-18 17:47:28