Kann mir jemand erklären, warum table.unpack()
das erste Tabellenelement nur dann zurückgibt, wenn es in einem Funktionsaufruf mit zusätzlichen Parametern nach table.unpack()
?
Hier ist ein Demo-Code:
%Vor% Ich verstehe nicht, warum die zweite Zeile nur 1 Test
ausgibt. Ich würde erwarten, dass 1 2 3 4 5 Test
gedruckt wird. Kann jemand dieses Verhalten erklären? Ich wäre auch daran interessiert, wie ich den zweiten Aufruf zum Drucken von 1 2 3 4 5 Test
machen kann.
table.unpack
gibt mehrere Werte zurück. Das definierte Verhalten in diesem Fall ist, dass, wenn es nicht das letzte in einer Liste von Ausdrücken ist, alle außer dem ersten zurückgegebenen Wert verworfen werden.
Aus dem Buch :
Lua passt die Anzahl der Ergebnisse einer Funktion immer an die Umstände des Anrufs an. Wenn wir eine Funktion als Anweisung aufrufen, verwirft Lua alle seine Ergebnisse. Wenn wir einen Aufruf als Ausdruck verwenden, behält Lua nur das erste Ergebnis. Wir erhalten alle Ergebnisse nur, wenn der Aufruf der letzte (oder einzige) Ausdruck in einer Liste von Ausdrücken ist.
Als Workaround können Sie die restlichen Argumente an die Tabelle anhängen und die Tabelle so zum letzten Argument machen.