Ich möchte gerade und ungerade Elemente in einer Liste zippen, um eine Liste von Paaren zu erstellen:
%Vor%Was ist der prägnanteste Ausdruck, um dies in eleganter und funktionaler Weise zu tun?
In 2.8 würden Sie wahrscheinlich Methoden verwenden:
%Vor% (Dies ist 2.8.0 Beta1; der letzte Stamm hat collect
anstelle von partialMap
.)
In 2.7 - und kein schlechter zweiter Platz in 2.8 - könntest du eine rekursive Methode erstellen, wie es legoscia gemacht hat:
%Vor%Edit: Hier ist ein weiterer kürzerer Ansatz, der auch auf 2.7 funktioniert:
%Vor% (Beachten Sie die Verwendung von drop(1)
anstelle von tail
, damit es mit leeren Listen funktioniert.)
Der einzige Vorteil, dass alle die offensichtlichsten Möglichkeiten haben, dies zu tun, ist, dass ich mir alternative Lösungen überlegen muss. Also hier ist eine, die auf Scala 2.8 funktioniert. Ersetzen Sie auf Scala 2.7 view
durch projection
.
Streng genommen ist view
/ projection
unnötig, aber es vermeidet unnötige Erzeugung von Zwischenergebnissen.
Andere lustige Möglichkeiten, es zu tun:
%Vor%PS: Bonuspunkt auf wer auch immer das Wortspiel bekommt. ; -)
Tags und Links scala functional-programming