鉴于此对象:
foo = { }
function foo:new( p1, p2 )
local object = {}
setmetatable( object, self )
self.__index = self
object .p1 = p1
object .p2 = p2
return object
end
function foo:bar( boolbar )
self.p1 = not boolbar
print( self.p1 )
end
现在我得到另一个对象,它通过使用对foo的引用调用foos函数(foo不能直接访问)并将参数传递给它。不知怎的,自我成了争论。
reference_to_foo = foo
function the_other_object:some_func()
-- does some stuff
reference_to_foo:bar( true )
end
调用foo:bar()效果很好,但是对于reference_to_foo,索引self成为参数(在本例中为boolean)。
在:bar()中,我会收到此错误:
尝试索引本地'self'(布尔值)
为什么会这样,我该如何解决?