Erreur tout en essayant d'appeler une méthode de classe: tentative d'indice « soi » (une valeur nulle) locale - Lua

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

  •  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 .

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top