尝试索引本地'self'(零值)

zon*_*gon 13 lua

我的课有问题.我得到以下错误:尝试索引本地'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书/教程中找到.