Errore durante il tentativo di chiamare un metodo di classe: tentare di indicizzare "self" locale (un valore nullo) - lua

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

  •  28-10-2019
  •  | 
  •  

Domanda

Sto creando uno script LUA che dovrebbe essere eseguito sul calcolatore Ti-NSpire. Il problema è che durante l'esecuzione del mio script ricevo l'errore Attempt to index local 'self' (a nil value) quando il button:activate() il metodo è chiamato. Il parser afferma che l'errore è nell'ottava riga nel codice seguente. Il codice problematico è il seguente:

button = class(view)

function button:init()
    self.selected = false
end

function button:activate()
    self.selected = true
end

Chiamo la funzione di attivazione come questa:

item = button()
local action = "activate"
local arguments = {}
item[action](unpack(arguments))

Sono a conoscenza del class() La funzione non esiste in "Stock" Lua, è una funzione disponibile nell'implementazione di TI-NSPIRE LUA. Puoi trovare la sua definizione e uso qui.

È stato utile?

Soluzione

obj:methodname(args) è zucchero per obj.methodname(obj,args). Quindi, se vuoi usare la sintassi item[action](unpack(arguments)), devi usare item[action](item,unpack(arguments)). Altrimenti, prova item:activate(unpack(arguments)) Se puoi usare il metodo esplicitamente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top