Erreur tout en essayant d'appeler une méthode de classe: tentative d'indice « soi » (une valeur nulle) locale - Lua
-
28-10-2019 - |
Question
Je crée un script lua qui devrait fonctionner sur la calculatrice TI-Nspire. Le problème est que lors de l'exécution de mon script, je reçois l'erreur Attempt to index local 'self' (a nil value)
lorsque la méthode button:activate()
est appelée. L'analyseur indique l'erreur est dans la 8ème ligne dans le code ci-dessous. Le code problématique est la suivante:
button = class(view)
function button:init()
self.selected = false
end
function button:activate()
self.selected = true
end
J'appelle la fonction activate comme ceci:
item = button()
local action = "activate"
local arguments = {}
item[action](unpack(arguments))
Je suis conscient de la fonction class()
n'existe pas dans « stock » Lua, il est une fonction disponible dans la mise en œuvre TI-Nspire Lua. Vous pouvez trouver la définition et l'utilisation .
La solution
obj:methodname(args)
is sugar for obj.methodname(obj,args)
. So, if you want to use the syntax item[action](unpack(arguments))
, you need to use item[action](item,unpack(arguments))
. Otherwise, try item:activate(unpack(arguments))
if you can use method explicitly.