Opaque Types mit dem Schlüsselwort some
Geben Sie aus Funktionen opake Typen zurück, um die Typidentität ohne Offenlegung zu bewahren.
Opaque Types mit dem Schlüsselwort some 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.
Das Problem, das opake Typen lösen
Die Rückgabe eines Protokolltyps mit any verliert Typinformationen. some bewahrt sie und verbirgt gleichzeitig die Implementierung.
protocol Shape { var area: Double { get } }
struct Circle: Shape { var area: Double { .pi * 4 } }some Protocol zurückgeben
some Shape als Rückgabetyp teilt dem Aufrufer mit: „Ich gebe einen bestimmten Shape-Typ zurück“, ohne zu verraten, welchen.
func makeShape() -> some Shape {
return Circle()
}
let s = makeShape()
print(s.area)Die Typidentität bleibt erhalten
Da some-Typen einen festgelegten zugrunde liegenden Typ haben, erlaubt der Compiler Operationen, die Self erfordern.
func makeEquatableShape() -> some Shape & Equatable {
return Circle()
}
let a = makeEquatableShape()
let b = makeEquatableShape()
print(a == b) // works because types matchsome vs. any
some ist opak (ein einzelner festgelegter Typ), any ist existenziell (zur Laufzeit jeder konforme Typ).
func withSome() -> some Shape { Circle() } // opaque
func withAny() -> any Shape { Circle() } // existentialsome im SwiftUI-Body
SwiftUI verwendet some View, damit der Body jeder View einen einzigen konsistenten Typ zurückgibt, ohne interne Layoutdetails offenzulegen.
struct ContentView: View {
var body: some View {
Text("Hello, World!")
}
}Opake Parameter mit some
Swift 5.7+ erlaubt some Protocol an Parameterpositionen als syntaktische Kurzform für generische Einschränkungen.
func printArea(_ shape: some Shape) {
print(shape.area)
}
printArea(Circle())Umgekehrte Generics
Ein opaker Parameter some P entspricht . Der Compiler leitet T am Aufrufort ab.
func doubled(_ value: some Numeric) -> some Numeric {
value * 2
}Einschränkungen für some
Sie können Protokolle mit opaken Typen genauso wie bei Generics kombinieren.
func process(_ item: some Codable & Hashable) {
let hash = item.hashValue
print(hash)
}Unterschiedliche Typen zurückgeben
Im Gegensatz zu Existenztypen können Sie mit opaken Typen aus verschiedenen Verzweigungen keine unterschiedlichen konformen Typen zurückgeben.
// This would NOT compile:
// func shape(_ big: Bool) -> some Shape {
// big ? Circle() : Square() // ERROR: different types
// }Opake Typen in Protokollen
Protokolle mit zugehörigen Typen lassen sich mit some als Rückgabetypen einfacher verwenden.
protocol Buildable { associatedtype Output; func build() -> Output }
func build(_ b: some Buildable) -> some Any {
b.build()
}Wann Sie some wählen sollten
Bevorzugen Sie some, wenn Sie einen einzigen konsistenten Typ zurückgeben und seine Identität bewahren möchten. Verwenden Sie any, wenn Sie heterogene Sammlungen benötigen.
var shapes: [any Shape] = [Circle(), Circle()]
let single: some Shape = Circle()Kurztest
Was garantiert das Schlüsselwort some über einen Rückgabetyp?
Zusammenfassung der Lektion
some erzeugt opake Rückgabetypen, die den konkreten Typ verbergen und gleichzeitig die Typidentität bewahren. SwiftUIs some View ist das bekannteste Beispiel. Verwenden Sie some für Rückgaben mit einem einzigen Typ und any für heterogene Sammlungen.
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 „Opaque Types mit dem Schlüsselwort some“ kostenlos?
Ja — der vollständige Text von „Opaque Types mit dem Schlüsselwort some“ 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 „Opaque Types mit dem Schlüsselwort some“?
Geben Sie aus Funktionen opake Typen zurück, um die Typidentität ohne Offenlegung zu bewahren. 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 „Opaque Types mit dem Schlüsselwort some“?
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
- Generische Einschränkungen und where-Klauseln
- Opaque Types mit dem Schlüsselwort some
- Existenztypen mit any und Type Erasure
- Primäre Associated Types und typisierte Throws