Inferenz in Closures
Verstehen Sie die Inferenz von Parametern und Rückgabewerten in Closures.
Inferenz in Closures ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 4 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.
Closures leiten Typen ab
In vielen Kontexten kann eine Closure sowohl ihren Parameter- als auch ihren Rückgabetyp aus ihrer Verwendung ableiten.
let numbers = [1, 2, 3, 4]
let doubled = numbers.map { $0 * 2 }
print(doubled)Abgeleiteter Parametertyp
Wenn Sie eine Closure an map übergeben, teilt der Elementtyp Swift mit, was $0 ist. Daher können Sie den Parametertyp weglassen.
let names = ["ada", "bob"]
let upper = names.map { $0.uppercased() }
print(upper)Abgeleiteter Rückgabetyp
Der Rumpf der Closure bestimmt ihren Rückgabetyp. Die Rückgabe eines Bool macht die Closure zu einem Prädikat.
let nums = [1, 2, 3, 4, 5]
let evens = nums.filter { $0 % 2 == 0 }
print(evens)Kurzbezeichnungen für Argumente
$0, $1 und so weiter verweisen anhand ihrer Position auf die Closure-Argumente, wenn deren Typen abgeleitet werden.
let sums = zip([1, 2, 3], [10, 20, 30]).map { $0 + $1 }
print(Array(sums))Explizite Parameter bei Bedarf
Sie können Parameter weiterhin benennen und Typen annotieren, wenn dadurch die Verständlichkeit verbessert wird.
let nums = [3, 1, 2]
let sorted = nums.sorted { (a: Int, b: Int) -> Bool in
return a < b
}
print(sorted)Inferenz aus dem Kontext
Wenn Sie eine Closure einer typisierten Variable zuweisen, teilt der Typ der Variable der Closure ihre Signatur mit.
let add: (Int, Int) -> Int = { a, b in a + b }
print(add(2, 3))Trailing Closure
Die Trailing-Closure-Syntax erhält die Typinferenz und macht gleichzeitig Aufrufstellen besser lesbar.
let result = [5, 3, 8, 1].sorted { $0 > $1 }
print(result)Inferenz in reduce
Bei reduce werden der Typ des Akkumulators und der Elementtyp aus dem Anfangswert und der Sequenz abgeleitet.
let total = [1, 2, 3, 4].reduce(0) { acc, x in acc + x }
print(total)Rückgabe aus einer Closure
Closures mit einem einzigen Ausdruck können das Schlüsselwort return weglassen. Der Wert des Ausdrucks wird zurückgegeben und sein Typ abgeleitet.
let lengths = ["hi", "hello", "hey"].map { $0.count }
print(lengths)Typannotierte Closure-Variable
Wenn Sie eine Closure ohne sofortigen Aufruf speichern, annotieren Sie den Closure-Typ, damit Swift den Rumpf ableiten kann.
let transform: (String) -> Int = { $0.count }
print(transform("swift"))Wann Sie annotieren müssen
Wenn der umgebende Kontext keine Typinformationen liefert, kann Swift die Closure-Parameter nicht ableiten und Sie müssen sie annotieren.
let isPositive: (Int) -> Bool = { n in n > 0 }
print(isPositive(5), isPositive(-3))Kurztest
Testen Sie die Inferenz bei Closures.
Zusammenfassung
Closures leiten Parameter- und Rückgabetypen aus dem Kontext ab, etwa aus map, filter oder einer typisierten Variable. Verwenden Sie die Kurzschreibweise $0/$1, wenn Typen abgeleitet werden, und annotieren Sie explizit, wenn kein Kontext verfügbar ist.
let f: (Int) -> Int = { $0 + 1 }
let xs = [1, 2, 3].map { $0 * 10 }
print(f(9), xs)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 „Inferenz in Closures“ kostenlos?
Ja — der vollständige Text von „Inferenz in Closures“ 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 „Inferenz in Closures“?
Verstehen Sie die Inferenz von Parametern und Rückgabewerten in Closures. 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 4 von 4.
Wie lange dauert die Lektion „Inferenz in Closures“?
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
- Funktionsweise der Typinferenz
- Wann explizite Annotationen sinnvoll sind
- Inferenz bei Literalen
- Inferenz in Closures