Ошибка при попытке вызвать метод класса: попытка индексировать локальный «я» (значение NIL) - lua

StackOverflow https://stackoverflow.com/questions/7353035

  •  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)) Если вы можете использовать метод явно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top