Wie kann ich die ersten Ergebnisse aus einer Funktion in Lua ignorieren?
-
02-10-2019 - |
Frage
Lua-Funktionen können mehrere Ergebnisse zurückgeben:
a, b, c = unpack({'one', 'two', 'three'})
Wenn ich in der dritten Rückgabewert nicht interessiert bin, kann ich wählen, um es zu ignorieren, wenn die Funktion aufrufen:
a, b = unpack({'one', 'two', 'three'})
Gibt es eine ähnliche Art und Weise die X ersten Elemente zu ignorieren, wenn die Funktion aufrufen?
Ich könnte diesen Code schreiben, wenn ich nur den dritten Rückgabewert will, aber ich frage mich, ob ein sauberer Code vorhanden ist:
_, _, c = unpack({'one', 'two', 'three'})
Lösung
Sie können die select
Funktion. Es werden alle Argumente nach index
zurück, wo index
das erste Argument select
gegeben ist.
Beispiele:
c = select(3, unpack({'one', 'two', 'three'}))
b, c = select(2, unpack({'one', 'two', 'three'}))
b = select(2, unpack({'one', 'two', 'three'})) --discard last return value
Wie gesagt, ich glaube, in den meisten Fällen _,_,c = f()
Schreiben sauberer ist. select
ist meist sinnvoll, wenn das Argument Nummer nicht im Voraus bekannt ist, oder wenn Verkettungsfunktionsaufrufe zusammen (z.B. f(select(2, g()))
)