调用类方法时出现错误:尝试索引本地“self”(一个空值)- Lua。

我正在创建一个 Lua 脚本,它应该在 TI-Nspire 计算器上运行。问题在于,当调用 button:activate() 方法时,我运行脚本时会得到错误 Attempt to index local 'self' (a nil value)。解析器说错误在下面代码的第 8 行。有问题的代码如下:

button = class(view)

function button:init()
    self.selected = false
end

function button:activate()
    self.selected = true
end

我这样调用激活函数:

item = button()
local action = "activate"
local arguments = {}
item[action](unpack(arguments))

我知道 class() 函数在“标准” Lua 中不存在,它是 TI-Nspire Lua 实现中可用的函数。您可以在这里找到其定义和用法。

原文链接 https://stackoverflow.com/questions/7353035

点赞
stackoverflow用户107090
stackoverflow用户107090

obj:methodname(args) 表示 obj.methodname(obj,args) 的简写形式。因此,如果您想使用item[action](unpack(arguments)) 的语法,则需要使用item[action](item,unpack(arguments))。否则,如果您可以显式地使用方法,请尝试使用item:activate(unpack(arguments))

2011-09-08 18:56:54