Ошибка при попытке вызвать метод класса: попытка индексировать локальное «я» (нулевое значение) - Lua - PullRequest
2 голосов
/ 08 сентября 2011

Я создаю скрипт lua, который должен запускаться на калькуляторе TI-Nspire.Проблема в том, что во время выполнения моего скрипта я получаю ошибку 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() не существует в "штатном" Luaэто функция, доступная в реализации TI-Nspire Lua.Вы можете найти его определение и использование здесь .

1 Ответ

6 голосов
/ 08 сентября 2011

obj:methodname(args) - сахар для obj.methodname(obj,args). Итак, если вы хотите использовать синтаксис item[action](unpack(arguments)), вам нужно использовать item[action](item,unpack(arguments)). В противном случае попробуйте item:activate(unpack(arguments)), если вы можете использовать метод явно.

...