Lua& OO,如何从另一种方法访问方法?

时间:2014-03-04 17:01:04

标签: oop lua

因此,如果我有一个Object并且需要从该Object中的另一个方法调用一个方法,我该如何构建该调用?

TestObject = {}
TestObject.__index = TestObject

function TestObject.new()   
    local self = setmetatable({}, TestObject)
    self.value = init
    -- a count [integer] of something. Not important what
    self.counter = 99
    return self
end

function TestObject:getCount()  
    return self.counter
end

function TestObject:getCountPlus(add_value)
    -- HERE HOW SHOULD THIS BE FORMATED??
    return self.getCount() + add_value
end

使用此Object将是这样的:

local testObject = TestObject.new() 
testObject:getCountPlus(1)

应该导致100。

1 个答案:

答案 0 :(得分:2)

getCount()需要知道它是什么实例。当你写

function TestObject:getCount()

与写作相同

function TestObject.getCount(self)

(注意冒号变为点)。因此,调用self.getCount()就像使用getCount调用self=nil一样。 self:getCount() self.getCount(self),与:相同。这可能看起来很奇怪:为什么翻译不能自动提供自我?这就是语言的设计方式:它只使用{{1}}符号自动提供。