Swift Academy · Lektion

Ausschnitte wieder in Arrays umwandeln

Erstellen Sie aus einem Ausschnitt ein eigenständiges Array.

Lektion 3 von 413 Schritte

Ausschnitte wieder in Arrays umwandeln ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 3 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 sind keine Arrays

Ein ArraySlice ist ein anderer Typ als Array. Viele APIs erwarten ein konkretes Array, daher müssen Sie häufig konvertieren.

let original = [1, 2, 3, 4, 5]
let slice = original[1..<4]
print(type(of: slice))

Array(slice)

Schließen Sie einen Slice in den Initialisierer Array(...) ein, um ein neues, unabhängiges Array mit kopierten Elementen und Indizes ab null zu erstellen.

let original = [10, 20, 30, 40, 50]
let slice = original[2..<5]
let array = Array(slice)
print(array)
print(type(of: array))

Indizes werden auf null zurückgesetzt

Nach der Konvertierung indiziert das neue Array ab 0 neu. Der Slice hingegen behält die Indizes des übergeordneten Arrays.

let original = [1, 2, 3, 4, 5]
let slice = original[3..<5]
let copy = Array(slice)
print("slice start:", slice.startIndex)
print("array start:", copy.startIndex)

Bei der Konvertierung wird der Speicher kopiert

Die Konvertierung erzwingt eine Kopie. Das neue Array nutzt den Speicher nicht mehr gemeinsam mit dem übergeordneten Array. Änderungen daran wirken sich daher nicht auf das ursprüngliche Array aus.

let original = [1, 2, 3, 4]
var copy = Array(original[1..<3])
copy[0] = 999
print("original:", original)
print("copy:", copy)

Arrays aus Funktionen zurückgeben

Wenn eine Funktion einen Teil eines Arrays zurückgibt, konvertieren Sie den Slice, damit die aufrufende Seite ein normales Array erhält.

func firstThree(of nums: [Int]) -> [Int] {
    return Array(nums.prefix(3))
}
print(firstThree(of: [9, 8, 7, 6, 5]))

An Array-Parameter übergeben

Wenn ein API-Parameter den Typ [Int] hat, müssen Sie einen Slice vor der Übergabe konvertieren.

func total(_ values: [Int]) -> Int {
    return values.reduce(0, +)
}
let data = [1, 2, 3, 4, 5]
let result = total(Array(data[1..<4]))
print(result)

Wann eine Konvertierung nicht erforderlich ist

Wenn Ihre Funktion ein generisches Sequence oder Collection akzeptiert, können Sie den Slice direkt übergeben, ohne ihn zu konvertieren.

func describe<S: Sequence>(_ s: S) where S.Element == Int {
    print(Array(s))
}
let arr = [2, 4, 6, 8]
describe(arr[1..<3])

Speicherkompromiss

Slices vermeiden Kopien und halten den Speicher des übergeordneten Arrays am Leben. Wenn Sie lange Zeit einen kleinen Slice eines riesigen Arrays halten, konvertieren Sie ihn in ein Array, damit der große Puffer freigegeben werden kann.

let huge = Array(1...1000)
let keep = Array(huge[0..<3]) // small independent copy
print(keep)

In ein Set konvertieren

Sie können einen Slice auch an andere Initialisierer für Collections wie Set übergeben.

let arr = [1, 2, 2, 3, 3, 3]
let uniqueTail = Set(arr[2..<6])
print(uniqueTail.sorted())

Roundtrip

Einen Slice zu erstellen, ihn zu konvertieren und anschließend erneut einen Slice zu erstellen, ist völlig unproblematisch. Jede Konvertierung ist explizit und vorhersehbar.

let arr = [10, 20, 30, 40, 50]
let a = Array(arr[1..<4])
let b = Array(a[0..<2])
print(a)
print(b)

Bewährte Vorgehensweise

Arbeiten Sie während der Berechnung weiter mit Slices und konvertieren Sie erst an der Grenze, an der Sie das Ergebnis speichern oder zurückgeben, in ein Array.

let arr = [3, 1, 4, 1, 5, 9, 2]
let top3 = Array(arr.sorted(by: >)[0..<3])
print(top3)

Kurztest

Testen Sie die Konvertierung von Slices.

Zusammenfassung

Verwenden Sie Array(slice), um einen ArraySlice in ein unabhängiges Array mit nullbasierten Indizes und eigenem, kopiertem Speicher umzuwandeln. Konvertieren Sie an API-Grenzen und behalten Sie während der Berechnung die Slices bei, um zusätzliche Kopien zu vermeiden.

let s = [1, 2, 3, 4, 5][2..<5]
let a = Array(s)
print(a, a.startIndex)
Kostenlos starten

Lerne Swift mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
122
Lektionen
409

Häufig gestellte Fragen

Ist die Lektion „Ausschnitte wieder in Arrays umwandeln“ kostenlos?

Ja — der vollständige Text von „Ausschnitte wieder in Arrays umwandeln“ 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 „Ausschnitte wieder in Arrays umwandeln“?

Erstellen Sie aus einem Ausschnitt ein eigenständiges Array. 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 3 von 4.

Wie lange dauert die Lektion „Ausschnitte wieder in Arrays umwandeln“?

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

  1. Ausschnitte mit Bereichen erstellen
  2. Indexsemantik von ArraySlice
  3. Ausschnitte wieder in Arrays umwandeln
  4. prefix, suffix und dropFirst
← Zurück zu Swift Academy