Was ist die Bedeutung von 'Versuch-index upvalue'
Ich mache gerade meine ersten Schritte der Programmierung in Lua und bekomme diese Fehlermeldung, wenn ich mein Skript auszuführen:
attempt to index upvalue 'base' (a function value)
Wahrscheinlich ist es wegen etwas, was sehr basic, ich habe nicht Begriffen, aber ich finde keine guten Informationen darüber beim googlen. Könnte mir jemand erklären was es bedeutet?
- Hier sind ein paar Referenzen für den Begriff " upvalue. Diese Seite beschreibt das Konzept mit einem Beispiel über eine anonyme Funktion lua.org/pil/6.1.html und das posting beschwert sich über den Begriff upvalue, was eine alternative lua-users.org/lists/lua-l/2005-11/msg00243.html
Du musst angemeldet sein, um einen Kommentar abzugeben.
In diesem Fall sieht es
base
ist eine Funktion, aber Sie versuchen zu indizieren, wie eine Tabelle (zB.base[5]
oderbase.somefield
).Den "upvalue" Teil ist nur zu sagen, was für eine Art von variable
base
ist, in diesem Fall ein upvalue (aka externe lokale variable).Einem "lokalen" zu viele?
Als Mike F erklärte, ein "upvalue" ist eine externe lokale variable. Dieser Fehler tritt Häufig auf, wenn eine variable deklariert wurde
local
in eine vorwärts-Deklaration und dann erklärtlocal
wieder, wenn es initialisiert wird. Dies lässt die vorwärts deklarierte variable mit einem Wert vonnil
. Dieses code-snippet zeigt, was nicht zu tun:In diesem Fall, das entfernen der
local
vorfoo
wenn es initialisiert wird, inf()
behebt das Beispiel, d.h.Nun der Aufruf useFoo() erzeugt die gewünschte Ausgabe