In Python gibt es itertools.cycle
, die eine iterable
nimmt und einen iterierbaren Iterator erstellt, der wiederholt den Inhalt aus der Quelle liefert.Zyklus-Iterator in Swift
Ich möchte dieses Verhalten in Swift replizieren.
Ein Kandidat für dieses Verhalten zu replizieren die Standard-Bibliothek wäre repeatElement(_:count:)
: tun repeatElement(seq, count: 5).flatMap({$0})
eine Anordnung der Elemente der seq
fünf Mal schafft, aber das meine Anforderungen nicht erfüllt, da es nur seq
eine endliche Anzahl von Malen wiederholt. Zusätzlich wird ein Array
der Länge 5 * seq.length
erstellt, wobei nur ein Cache der Länge seq
tatsächlich benötigt wird.
Also die Frage ist: Wie kann ich eine unendliche Sequence
durch Wiederholen der Elemente einer Quelle Sequence
erstellen? Die Lösung sollte keine Platzkosten von mehr als O(n)
haben. (A O(1)
wäre unmöglich, in Swift zu garantieren, als Sequence
makes no guarentee that it can be iterated multiple times.)