Der Kontext: Ich habe einen generischen Stapel von Objekten. Der Stapel reagiert() Pop (gibt einen optional), und ich habe eine Funktion, die den StapelWährend optional, unwrap, wenn etwas enthält
- verarbeiten muss Wenn der Stapel leer ist, andernfalls
- einen Fehler aus, wiederholen Sie die Wiederholungs-Modus bis zum nächsten optional nicht unwrappable
Bisher
guard var nextVar = myStack.pop() else {
throw MyError.EmptyStack
}
repeat {
// Process nextVar
} while nextVar = myStack.pop()
Problem: die erste nextVar ist kein optionale daher nicht mein während Anruf. Wie kann ich neu schreiben, so dass die while überprüft, ob das optionale enthält etwas Und wenn das gelingt, den Inhalt der Variablen zuweisen?()
Minor Bemerkung: Wenn Sie beide SequenceType annehmen * und * GeneratorType dann müssen Sie nicht implementieren erzeugen(), gibt es eine Default-Implementierung. –