访问lua self成员返回了nil。

我试图访问'self'的成员,如下所示:

function BasePlayer:blah()
    --do blah
end
function BasePlayer: ctor(tape)     〜构造函数。
    self.tape = tape                 〜'tape'是一个lua表,并分配给'self.tape'。
    转储(self.tape)                  〜我可以转储表'self.tape',显然它不为nilself.coreLogic = function(dt)    〜每帧调用的回调函数。
        echoInfo("%s"self)          〜打印自 'userdata:0x11640d20'。
        echoInfo("%s"self.tape)     〜问题在这里:为什么'self.tape'nil??
        self:blah()                  〜甚至功能也是??
    end
end

所以我的问题是,在我的回调函数'coreLogic'中,为什么'self.tape'是nil而self是valid?

而且函数也不能被调用。

我真的很困惑:S

点赞
用户1190388
用户1190388

当您使用 : 定义函数时,隐式参数会自动生成。当您定义函数 coreLogic 时,您需要将其作为第一个参数传递:

self.coreLogic = function( self, dt )

这与以下操作相同:

function self:coreLogic(dt)

self 本身并不存在。


基本上,

function BasePlayer:blah()

与以下方式写作相同:

function BasePlayer.blah( BasePlayer )
2014-04-25 12:29:50