因此,如果我有一个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。
答案 0 :(得分:2)
getCount()
需要知道它是什么实例。当你写
function TestObject:getCount()
与写作相同
function TestObject.getCount(self)
(注意冒号变为点)。因此,调用self.getCount()
就像使用getCount
调用self=nil
一样。 self:getCount()
self.getCount(self)
,与:
相同。这可能看起来很奇怪:为什么翻译不能自动提供自我?这就是语言的设计方式:它只使用{{1}}符号自动提供。