访问lua自身成员获得零

访问lua自身成员获得零,lua,member,null,self,lua-table,Lua,Member,Null,Self,Lua Table,我试图访问“self”的成员,请参见以下内容: function BasePlayer:blah() --do blah end function BasePlayer:ctor(tape) --constructor. self.tape = tape --'tape' is a lua table, and assigned to 'self.tape'. dump(self.tape) -

我试图访问“self”的成员,请参见以下内容:

function BasePlayer:blah()
    --do blah
end
function  BasePlayer:ctor(tape)      --constructor.
    self.tape = tape                 --'tape' is a lua table, and assigned to 'self.tape'.
    dump(self.tape)                  --i can dump table 'self.tape',obviously it's not nil.
    self.coreLogic = function(dt)    --callback function called every frame.
        echoInfo("%s",self)          --prints self 'userdata: 0x11640d20'.
        echoInfo("%s",self.tape)     -- Here is my question: why self.tape is nil??
        self:blah()                  --even function too??
    end
end
所以我的问题是,在我的回调函数“coreLogic”中,为什么“self.tape”是nil,而self是
有效吗?
和函数也不能调用。

我真的很困惑:当您使用
定义函数时,隐式参数是自己创建的。定义函数
coreLogic
时,需要将其作为第一个参数传递:

self.coreLogic = function( self, dt )
这与:

function self:coreLogic(dt)
self
本身并不存在


基本上

function BasePlayer:blah()
与写作相同:

function BasePlayer.blah( BasePlayer )

使用
定义函数时,隐式参数将自行创建。定义函数
coreLogic
时,需要将其作为第一个参数传递:

self.coreLogic = function( self, dt )
这与:

function self:coreLogic(dt)
self
本身并不存在


基本上

function BasePlayer:blah()
与写作相同:

function BasePlayer.blah( BasePlayer )

使用
定义函数时,隐式参数将自行创建。定义函数
coreLogic
时,需要将其作为第一个参数传递:

self.coreLogic = function( self, dt )
这与:

function self:coreLogic(dt)
self
本身并不存在


基本上

function BasePlayer:blah()
与写作相同:

function BasePlayer.blah( BasePlayer )

使用
定义函数时,隐式参数将自行创建。定义函数
coreLogic
时,需要将其作为第一个参数传递:

self.coreLogic = function( self, dt )
这与:

function self:coreLogic(dt)
self
本身并不存在


基本上

function BasePlayer:blah()
与写作相同:

function BasePlayer.blah( BasePlayer )


纯Lua没有
自身
这样的东西。您提供的代码示例
self
是一个全局表。请您澄清一下,您使用的是什么框架或库?相关问题:,sample from,sample from,…@Kamiccolo冒号语法的隐式
self
参数是vanilla Lua的一部分。请参阅:
冒号语法用于定义方法,即具有隐式额外参数self的函数@ComicSansMS,对不起,我的错。误读了这个问题。不过,还有什么让我感到不舒服呢?据我所知,点语法用于构造和方法关联。@Kamiccolo冒号语法只是添加了一个隐式的self参数。这就是它的全部功能。如何使用它取决于代码。我使用的是框架。纯Lua没有
自我
这样的东西。您提供的代码示例
self
是一个全局表。请您澄清一下,您使用的是什么框架或库?相关问题:,sample from,sample from,…@Kamiccolo冒号语法的隐式
self
参数是vanilla Lua的一部分。请参阅:
冒号语法用于定义方法,即具有隐式额外参数self的函数@ComicSansMS,对不起,我的错。误读了这个问题。不过,还有什么让我感到不舒服呢?据我所知,点语法用于构造和方法关联。@Kamiccolo冒号语法只是添加了一个隐式的self参数。这就是它的全部功能。如何使用它取决于代码。我使用的是框架。纯Lua没有
自我
这样的东西。您提供的代码示例
self
是一个全局表。请您澄清一下,您使用的是什么框架或库?相关问题:,sample from,sample from,…@Kamiccolo冒号语法的隐式
self
参数是vanilla Lua的一部分。请参阅:
冒号语法用于定义方法,即具有隐式额外参数self的函数@ComicSansMS,对不起,我的错。误读了这个问题。不过,还有什么让我感到不舒服呢?据我所知,点语法用于构造和方法关联。@Kamiccolo冒号语法只是添加了一个隐式的self参数。这就是它的全部功能。如何使用它取决于代码。我使用的是框架。纯Lua没有
自我
这样的东西。您提供的代码示例
self
是一个全局表。请您澄清一下,您使用的是什么框架或库?相关问题:,sample from,sample from,…@Kamiccolo冒号语法的隐式
self
参数是vanilla Lua的一部分。请参阅:
冒号语法用于定义方法,即具有隐式额外参数self的函数@ComicSansMS,对不起,我的错。误读了这个问题。不过,还有什么让我感到不舒服呢?据我所知,点语法用于构造和方法关联。@Kamiccolo冒号语法只是添加了一个隐式的self参数。这就是它的全部功能。如何使用它取决于代码。我使用的是框架。你的意思是把
函数
关键字放在你的第二部分吗?因为这两个例子不一样。谢谢你的回答,但事实是,这个回调是从C调用的。其次,最奇怪的是,我可以在其他lua文件中使用这个方法。现在我要看看到底出了什么问题。一旦我发现了,我会在这里发布。好的,我现在发现了问题。原来它是由引擎回收的,所以你不会得到成员函数或变量。你的意思是把
函数
关键字放在你的第二部分吗?因为这两个例子不一样。谢谢你的回答,但事实是,这个回调是从C调用的。其次,最奇怪的是,我可以在其他lua文件中使用这个方法。现在我要看看到底出了什么问题。一旦我发现了,我会在这里发布。好的,我现在发现了问题。原来它是由引擎回收的,所以你不会得到成员函数或变量。你的意思是把
函数
关键字放在你的seco中吗