Fehler beim Versuch, eine Klassenmethode aufzurufen: Versuchen Sie, das lokale „Selbst“ (ein Nullwert) - lua

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

  •  28-10-2019
  •  | 
  •  

Frage

Ich erstelle ein Lua-Skript, das auf dem Ti-N-Spire-Taschenrechner ausgeführt werden soll. Das Problem ist, dass ich beim Ausführen meines Skripts den Fehler erhalte Attempt to index local 'self' (a nil value) wenn der button:activate() Methode heißt. Der Parser sagt, der Fehler sei in der 8. Zeile im folgenden Code. Der problematische Code lautet wie folgt:

button = class(view)

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

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

Ich nenne die Aktivitätsfunktion wie diese:

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

Ich bin mir bewusst, dass das class() Die Funktion existiert nicht in "Stock" lua, es ist eine Funktion, die in der Ti-N-Spire-Lua-Implementierung verfügbar ist. Sie können seine Definition und Verwendung finden hier.

War es hilfreich?

Lösung

obj:methodname(args) ist Zucker für obj.methodname(obj,args). Wenn Sie also die Syntax verwenden möchten item[action](unpack(arguments)), Sie müssen verwenden item[action](item,unpack(arguments)). Ansonsten versuchen Sie es item:activate(unpack(arguments)) Wenn Sie die Methode explizit verwenden können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top