Lua中如何尝试访问本地无效的self变量?
- 内容介绍
- 文章标签
- 相关推荐
本文共计340个文字,预计阅读时间需要2分钟。
我有一个问题。我遇到了以下错误:尝试索引本地自的值(一个零值)。当调用底层的getter方法时。Item.lua文件:+require+classlib+Item+=%3D+class+(Item)+function+Item+:+__init+(+)+self.interval+=%3D+1+endfunction
我有一个类的问题.我得到以下错误:尝试索引本地“自我”(一个零价值)
当我调用下面的getter方法.
Item.lua文件:
require "classlib" Item = class("Item") function Item:__init() self.interval = 1 end function Item:getInterval() return self.interval end
我这样调用这个getter函数:
dofile("../src/item.lua") item = Item() function test_item() assert_equal(1, item.getInterval()) end
这里有什么问题?
亲切的问候…
一般来说,您应该通过以下方式调用成员函数:.在Lua中,冒号(:)表示一个函数的调用,提供self作为第一个参数.
从而
A:foo()
大致相当于
A.foo(A)
如果没有在A.foo()中指定A,那么该函数的主体将尝试引用self参数,该参数尚未被显式地或者不被隐式地填充.
请注意,如果从成员函数内部调用它,self将已经可用:
-- inside foo() -- these two are analogous self:bar() self.bar(self)
所有这些信息,你会发现在任何好的Lua书/教程.
本文共计340个文字,预计阅读时间需要2分钟。
我有一个问题。我遇到了以下错误:尝试索引本地自的值(一个零值)。当调用底层的getter方法时。Item.lua文件:+require+classlib+Item+=%3D+class+(Item)+function+Item+:+__init+(+)+self.interval+=%3D+1+endfunction
我有一个类的问题.我得到以下错误:尝试索引本地“自我”(一个零价值)
当我调用下面的getter方法.
Item.lua文件:
require "classlib" Item = class("Item") function Item:__init() self.interval = 1 end function Item:getInterval() return self.interval end
我这样调用这个getter函数:
dofile("../src/item.lua") item = Item() function test_item() assert_equal(1, item.getInterval()) end
这里有什么问题?
亲切的问候…
一般来说,您应该通过以下方式调用成员函数:.在Lua中,冒号(:)表示一个函数的调用,提供self作为第一个参数.
从而
A:foo()
大致相当于
A.foo(A)
如果没有在A.foo()中指定A,那么该函数的主体将尝试引用self参数,该参数尚未被显式地或者不被隐式地填充.
请注意,如果从成员函数内部调用它,self将已经可用:
-- inside foo() -- these two are analogous self:bar() self.bar(self)
所有这些信息,你会发现在任何好的Lua书/教程.

