我的课有问题.我得到以下错误:尝试索引本地'self'(零值)当我调用下面的类的getter方法时.Item.lua文件:
require "classlib"
Item = class("Item")
function Item:__init()
self.interval = 1
end
function Item:getInterval()
return self.interval
end
Run Code Online (Sandbox Code Playgroud)
我正在调用这个getter函数:
dofile("../src/item.lua")
item = Item()
function test_item()
assert_equal(1, item.getInterval())
end
Run Code Online (Sandbox Code Playgroud)
这有什么问题?
亲切的问候...
Bar*_*icz 27
通常,您应该通过调用成员函数:.
在Lua中,冒号(:)表示函数的调用,self作为第一个参数提供.
从而
A:foo()
Run Code Online (Sandbox Code Playgroud)
大致等于
A.foo(A)
Run Code Online (Sandbox Code Playgroud)
如果未将A指定为in A.foo(),则函数体将尝试引用self参数,该参数既未明确也未隐式填充.
请注意,如果您从成员函数内部调用它,self则已经可用:
-- inside foo()
-- these two are analogous
self:bar()
self.bar(self)
Run Code Online (Sandbox Code Playgroud)
所有这些信息都可以在任何好的Lua书/教程中找到.