2014-03-04 37 views
2

因此,如果我有一個對象,並且需要從該對象內的另一個方法中調用一個方法,那麼我該如何構建該調用?Lua&OO,如何從另一種方法訪問方法?

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 

並使用該對象將是這樣的:

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

這將導致100

+2

'self.getCount()' - >'self:getCount()' –

回答

2

getCount()需要知道它是在什麼情況下當你寫

function TestObject:getCount() 

與寫作相同

function TestObject.getCount(self) 

(注意冒號改成了圓點)。因此撥打self.getCount()就像撥打getCountself=nil一樣。請撥打self:getCount(),與self.getCount(self)相同。這可能看起來很奇怪:爲什麼解釋者不能自動提供自我?這只是語言設計的方式:它只能自動提供:表示法。

相關問題