nehme ich eine Zeichenfolge in einer Tabelle am Einsetzen wie folgt:In Lua, kann ich einfach das N-te Ergebnis ohne benutzerdefinierte Funktionen auswählen?
table.insert(tbl, mystring)
und dass mystring
durch Ersetzen alle Vorkommen von "a" erzeugt, mit "b" in input
:
mystring = string.gsub(input, "a", "b")
Offensichtliche Möglichkeit, die beiden zu einer Aussage zu kombinieren, funktioniert nicht, weil gsub
zwei Ergebnisse zurückgibt:
table.insert(tbl, string.gsub(input, "a", "b")) -- error!
-- (second result of gsub is passed into table.insert)
Ich denke, das ist der Preis für die Unterstützung mehrerer Rückgabewerte. Die Frage ist, gibt es eine standardmäßige eingebaute Möglichkeit, nur den ersten Rückgabewert auszuwählen? Als ich select
fand, dachte ich, dass es genau das war, aber leider wählte es alle Ergebnisse ab N aus und hilft so nicht in diesem Szenario.
Jetzt weiß ich, ich kann meine eigenen select
wie folgt definieren:
function select1(n, ...)
return arg[n]
end
table.insert(tbl, select1(1, string.gsub(input, "a", "b")))
aber das sieht nicht richtig aus, da ich eine eingebaute Möglichkeit, dies zu tun, erwarten würde.
Also, fehlt mir ein eingebautes Konstrukt? Wenn nicht, tendieren Lua-Entwickler dazu, eine separate Variable zu verwenden, um das richtige Argument zu extrahieren oder ihre eigenen select1
-Funktionen zu schreiben?
Danke! Ich wette, ich werde schließlich in die gleiche Situation geraten, nur das zweite Ergebnis zu haben - welche Möglichkeiten habe ich dann? –
@romkyns: Aktualisiert meinen Beitrag zu beantworten. Obwohl Ihre 'select1'-Funktion besser lesbar ist. – interjay
Ich verwende gerne Dummies dafür, d. H. '_, _, _, ViertelVal, _ = gibMeFive()' Ich finde es besser lesbar. – deorst