Ich habe gelernt, dass Swift-Zeichenfolgen nicht mit ganzzahligen Werten indiziert werden können. Ich erinnerte mich daran und ich benutze die Regel. Aber ich habe die Mechanik dahinter nie verstanden.Warum Zeichenfolgen nicht mit ganzzahligen Werten indiziert werden können
Die Erklärung aus dem offiziellen Dokument ist als
"Verschiedene Zeichen folgt unterschiedliche Mengen an Speicher zum Speichern erfordern kann, so um die Rolle zu bestimmen, an einer bestimmten Position ist, müssen Sie über jedes Unicode iterieren Skalar vom Anfang oder Ende des Strings. Aus diesem Grund können Swift-Strings nicht mit ganzzahligen Werten indiziert werden. "
Ich habe es mehrmals gelesen, ich verstehe es immer noch nicht ganz. Kann mir jemand ein bisschen mehr erklären, warum Swift String nicht durch ganzzahlige Werte indiziert werden kann?
Vielen Dank
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/StringsAndCharacters.html - das ist das Thema, über das Sie sprechen. Für mich wird es ziemlich schwer sein, klarer zu erklären, als wenn Sie dieses Thema von Anfang bis Ende lesen. –
Kurzer Hinweis, keine vollständige Erklärung: Swift Zeichenketten respektieren Unicode, und einige Emojis, zum Beispiel, sind "zusammengesetzte" Zeichen, sie erscheinen als ein Zeichen, aber sie können tatsächlich bis zu vier echte Zeichen verwenden - es ist nur, dass wir nicht Sieh es, die verschiedenen Charaktere werden in einem zusammengefasst, wenn sie angezeigt werden. Deshalb können wir uns in Swift nicht auf den "Index" eines Zeichens in einer Zeichenkette verlassen. – Moritz
@Moritz, das erklärt, warum Sie die ganzzahlige Indexierung nicht implementieren können, indem Sie sie den entsprechenden Unicode-Codepunkten zuordnen, wie sie im Speicher erscheinen, aber dies verhindert nicht die Implementierung einer Schnittstelle, in der 'myString [8]' dem entspricht 7. kanonisches Symbol in 'myString'. Ihr Tipp ist absolut richtig, aber das obige ist warum ich - und wahrscheinlich auch andere - die Frage nachschlagen. –