0Pricing
Swift Academy · Lektion

Constraints (where), Typinferenz

Schränken Sie generischen Code mit where ein (z. B. mit Equatable-/Comparable- oder Element-Constraints) und sehen Sie, wie Swift generische Typen an Aufrufstellen ableitet.

Constraints (where), Typinferenz ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 3. 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 3 Lektionen.

Warum Constraints?

Fügen Sie Constraints hinzu, damit generischer Code bestimmte Operationen (wie == oder <) verwenden kann. Die Typinferenz von Swift wählt dann bei Aufrufen konkrete Typen.

Equatable-Constraint

where T: Equatable ermöglicht Gleichheitsvergleiche. Ohne diese Einschränkung ist == für beliebiges T nicht verfügbar.

// Find the first index of value in an array of T
func indexOf<T>(_ value: T, in array: [T]) -> Int? where T: Equatable {
    for (i, x) in array.enumerated() {
        if x == value { return i }        // allowed because T: Equatable
    }
    return nil
}
print(indexOf(3, in: [1,2,3,2]) ?? -1)     // 2
print(indexOf("b", in: ["a","b","c"]) ?? -1)  // 1

Comparable-Constraint

Eine Einschränkung wie T: Comparable ermöglicht Vergleichsoperationen wie <.

// Return the minimum value of a collection when elements are Comparable
func minimum<T: Comparable>(_ xs: [T]) -> T? {
    guard var best = xs.first else { return nil }
    for x in xs.dropFirst() {
        if x < best { best = x }
    }
    return best
}
print(minimum([7,3,9]) ?? -1)    // 3
print(minimum(["b","a","c"]) ?? "?") // "a"

Erweiterung mit where

Verwenden Sie where Element: ..., um APIs nur für bestimmte Elementtypen hinzuzufügen (hier für Arrays mit Equatable-Elementen).

// Add a helper only when the array's Element is Equatable
extension Array where Element: Equatable {
    func removingDuplicates() -> [Element] {
        var seen: [Element] = []
        for x in self {
            if !seen.contains(x) { seen.append(x) }
        }
        return seen
    }
}
print([1,2,2,3].removingDuplicates())   // [1,2,3]

Mehrere Constraints

Kombinieren Sie Constraints: Schränken Sie den generischen Typ und seine zugehörigen Typen ein (z. B. S.Element: Equatable).

// Require both Sequence and Equatable elements; force same-type relationship
func allEqual<S>(_ s: S) -> Bool
where S: Sequence, S.Element: Equatable {
    var it = s.makeIterator()
    guard let first = it.next() else { return true }
    while let v = it.next() { if v != first { return false } }
    return true
}
print(allEqual([2,2,2]))   // true
print(allEqual([1,2,1]))   // false

Typinferenz in der Praxis

Swift ermittelt generische Parameter aus Argumenten und Kontext, sodass Sie <T> nur selten explizit angeben müssen.

// Inference: compiler deduces concrete types
let i = indexOf(10, in: [5,10,15])   // T is Int
let j = minimum(["z","x"])           // T is String
print(i ?? -1, j ?? "")

Bedeutung von where

Kurzfrage: Was bewirkt eine where-Klausel?

Zusammenfassung

Zusammenfassung: Schränken Sie Generics mit where ein (z. B. T: Equatable, Element: Comparable) und verlassen Sie sich auf Swifts Typinferenz, um bei Aufrufen konkrete Typen auszuwählen.

Häufig gestellte Fragen

Ist die Lektion „Constraints (where), Typinferenz“ kostenlos?

Ja — der vollständige Text von „Constraints (where), Typinferenz“ 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 3 Lektionen.

Was lerne ich in „Constraints (where), Typinferenz“?

Schränken Sie generischen Code mit where ein (z. B. mit Equatable-/Comparable- oder Element-Constraints) und sehen Sie, wie Swift generische Typen an Aufrufstellen ableitet. 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 3.

Wie lange dauert die Lektion „Constraints (where), Typinferenz“?

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. Generische Funktionen und Typen
  2. Constraints (where), Typinferenz
  3. Generische Algorithmen für Collections
← Zurück zu Swift Academy