Ich möchte zwei (oder mehr) Sequenzen verbinden, die dann eine Folge von Tupeln erzeugen würden. Wobei das erste Tupel das erste Element jeder Sequenz enthalten würde und das zweite Tupel die zweiten Elemente usw. enthalten würde. Unten ist eine Beispielfunktion, die zwei Arrays nimmt und ein drittes Array von Tupeln erzeugt. Ich kann dann diese Sequenz verwenden, um mit den Funktionen map (), filter () und reduce () zu arbeiten.
Mein Beispiel funktioniert, aber es fehlt an einer Menge Möglichkeiten. Es ist für Arrays nicht für alle Sequenzen, es stoppt Tupel zu generieren, wenn die erste Sequenz von Elementen läuft. Ich möchte, dass Nils in den Tupeln für die kurzen Sequenzen sind, die keine Elemente mehr liefern können. Es ist nur für zwei Arrays, ich möchte es für eine beliebige Anzahl von Sequenzen,
Teillösungen wären hilfreich. Ich bin ein funktionierender Programmierneuling, also würde der korrekte Name für diese Funktion auch geschätzt werden. Vielleicht ist es schon in der switfz-Bibliothek Ich weiß nur, wie es heißt. Ich wählte "Join", weil es in etwa dem SQL "Join" ähnlich ist, der auch Tupel (a.k.a. rows) erstellt
%Vor% Es gibt bereits eine Funktion namens Zip2
:
Diese Funktion puffert jedoch nicht mit nil und verwendet auch die kürzeste der beiden Sequenzen. Beachten Sie jedoch, dass es nicht erforderlich ist, dass die Typen zwischen den beiden Sequenzen übereinstimmen und dass es eine beliebige Sequenz benötigt, nicht nur Arrays.
Hier ist meine eigene benutzerdefinierte Implementierung von Zip2WithNilPadding:
%Vor%Wenn Sie Fragen zur konkreten Implementierung haben, lassen Sie es mich wissen und ich werde versuchen, dies zu klären. Diese Implementierung sollte Ihnen auch beim Erstellen einer Zip-Datei helfen, die ein Array von Sequenzen enthält. Leider müssten sie in diesem Fall alle eine Sequenz desselben Typs sein, weil Sie keine variable Menge an Generika haben können.