2

我正在创建一个应该在 TI-Nspire 计算器上运行的 lua 脚本。问题是,在运行我的脚本时,调用Attempt to index local 'self' (a nil value)button:activate()方法时出现错误。解析器说错误在下面代码的第 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()“stock” Lua 中不存在该功能,它是 TI-Nspire Lua 实现中可用的功能。你可以在这里找到它的定义和用法。

4

1 回答 1

6

obj:methodname(args)是糖obj.methodname(obj,args)。所以,如果你想使用语法item[action](unpack(arguments)),你需要使用item[action](item,unpack(arguments)). 否则,请尝试item:activate(unpack(arguments))是否可以显式使用方法。

于 2011-09-08T18:56:54.303 回答