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'})
War es hilfreich?

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())))

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