Swift Academy · Lektion

Opaque Types mit dem Schlüsselwort some

Geben Sie aus Funktionen opake Typen zurück, um die Typidentität ohne Offenlegung zu bewahren.

Lektion 2 von 413 Schritte

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 match

some 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() }   // existential

some 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 (_ value: T). 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.

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 „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

  1. Generische Einschränkungen und where-Klauseln
  2. Opaque Types mit dem Schlüsselwort some
  3. Existenztypen mit any und Type Erasure
  4. Primäre Associated Types und typisierte Throws
← Zurück zu Swift Academy