Indexsemantik von ArraySlice
Verstehen Sie, warum Ausschnittindizes ihre ursprünglichen Positionen beibehalten.
Indexsemantik von ArraySlice ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Slices behalten die ursprünglichen Indizes
Eine wichtige Besonderheit: Ein ArraySlice indiziert nicht ab null neu. Es behält dieselben Indizes wie im übergeordneten Array.
let arr = [10, 20, 30, 40, 50]
let slice = arr[2..<5]
print(slice.startIndex)
print(slice.endIndex)startIndex ist nicht immer null
Der startIndex eines Slices entspricht der unteren Grenze, mit der er erstellt wurde. Bei arr[2..<5] ist der Startindex 2.
let arr = [1, 2, 3, 4, 5, 6]
let slice = arr[3..<6]
print("start:", slice.startIndex)
print("first value:", slice[slice.startIndex])Subscript-Zugriff auf einen Slice
Da die Indizes erhalten bleiben, müssen Sie die eigenen Indizes des Slices verwenden. Der Zugriff auf slice[0] führt bei einem Slice, der bei Index 2 beginnt, zur Laufzeit zu einem Absturz.
let arr = [100, 200, 300, 400]
let slice = arr[2..<4]
print(slice[2])
print(slice[3])startIndex sicher verwenden
Um unabhängig vom Start des Slices das erste Element zu erhalten, verwenden Sie slice.first oder slice[slice.startIndex].
let arr = [5, 6, 7, 8, 9]
let slice = arr[2..<5]
print(slice.first ?? -1)
print(slice[slice.startIndex])endIndex liegt hinter dem letzten Element
Wie bei Arrays verweist endIndex auf die Position direkt hinter dem letzten gültigen Element. Der Zugriff über endIndex ist ungültig.
let arr = [11, 22, 33, 44]
let slice = arr[1..<3]
print("endIndex:", slice.endIndex)
print("last valid:", slice[slice.endIndex - 1])Zählen und Indizieren
count eines Slices ist die Anzahl der Elemente und kann sich von seinem endIndex unterscheiden. Gehen Sie niemals davon aus, dass count dem letzten Index entspricht.
let arr = [0, 1, 2, 3, 4, 5]
let slice = arr[3..<6]
print("count:", slice.count)
print("startIndex:", slice.startIndex)Die Eigenschaft indices
Verwenden Sie die Eigenschaft indices, um den gültigen Indexbereich eines Slices sicher zu durchlaufen.
let arr = [10, 20, 30, 40, 50]
let slice = arr[1..<4]
for i in slice.indices {
print(i, slice[i])
}Warum Indizes erhalten bleiben
Durch das Beibehalten der Indizes können Sie eine Position im Slice ohne zusätzlichen Verwaltungsaufwand auf das ursprüngliche Array zurückführen. Der gefundene Index ist auch im übergeordneten Array gültig.
let arr = ["a", "b", "c", "d", "e"]
let slice = arr[2..<5]
if let idx = slice.firstIndex(of: "d") {
print("found at parent index:", idx)
print("parent has:", arr[idx])
}enumerated() setzt den Offset auf null
Wenn Sie Positionen ab null benötigen, verwenden Sie enumerated(). Die Methode liefert Offsets ab 0, unabhängig vom startIndex des Slices.
let arr = [9, 8, 7, 6, 5]
let slice = arr[2..<5]
for (offset, value) in slice.enumerated() {
print(offset, value)
}Abstand vom Anfang
Um aus einem Index einen Offset ab null zu berechnen, verwenden Sie distance(from:to:).
let arr = [1, 2, 3, 4, 5]
let slice = arr[2..<5]
let idx = slice.startIndex + 1
let offset = slice.distance(from: slice.startIndex, to: idx)
print("offset:", offset, "value:", slice[idx])Ein häufiger Fehler
Zu vergessen, dass Slices die Indizes des übergeordneten Arrays behalten, ist einer der häufigsten Fehler in Swift. Bevorzugen Sie immer first, enumerated() oder startIndex gegenüber einer fest codierten 0.
let arr = [100, 200, 300, 400, 500]
let slice = arr[3..<5]
// Safe: use first, not slice[0]
print(slice.first ?? 0)Kurzer Check
Leiten Sie das Verhalten von Slice-Indizes her.
Zusammenfassung
Ein ArraySlice behält die Indizes des übergeordneten Arrays: Sein startIndex ist die untere Grenze und nicht null. Verwenden Sie für einen sicheren Zugriff first, startIndex, indices oder enumerated(), niemals eine fest codierte 0.
let slice = [5, 6, 7, 8, 9][3..<5]
print(slice.startIndex, slice.first ?? -1)Häufig gestellte Fragen
Ist die Lektion „Indexsemantik von ArraySlice“ kostenlos?
Ja — der vollständige Text von „Indexsemantik von ArraySlice“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Indexsemantik von ArraySlice“?
Verstehen Sie, warum Ausschnittindizes ihre ursprünglichen Positionen beibehalten. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Swift Academy zu starten?
Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Indexsemantik von ArraySlice“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?
Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Ausschnitte mit Bereichen erstellen
- Indexsemantik von ArraySlice
- Ausschnitte wieder in Arrays umwandeln
- prefix, suffix und dropFirst