Ошибка при попытке вызвать метод класса: попытка индексировать локальный «я» (значение NIL) - lua
-
28-10-2019 - |
Вопрос
Я создаю сценарий 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()
Функция не существует в «Stock» Lua, это функция, доступная в реализации Ti-Nspire Lua. Вы можете найти его определение и использование здесь.
Решение
obj:methodname(args)
сахар для obj.methodname(obj,args)
. Анкет Итак, если вы хотите использовать синтаксис item[action](unpack(arguments))
, вам нужно использовать item[action](item,unpack(arguments))
. Анкет В противном случае попробуйте item:activate(unpack(arguments))
Если вы можете использовать метод явно.