自我索引变成了参数。

给出了以下对象:

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的引用(不能直接访问foo)并向其传递参数调用foos函数。不知何故,self变成了参数。

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成为参数(在这种情况下为布尔值)。

在:bar()中,我会得到此错误:

尝试对本地“self”(布尔值)进行索引

为什么会这样,我该如何解决?

点赞