Swift Academy · Ders

some P (opak sonuç türleri): somut türleri gizleme

Somut dönüş türünü gizlerken some P döndürün ve P protokolüne uyacağını taahhüt edin; çağıranlar, uygulama ayrıntılarını açığa çıkarmadan statik tür performansından yararlanır.

1. ders / 38 adım

some P (opak sonuç türleri): somut türleri gizleme, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 3 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 3 dersten oluşur.

Opak sonuç türleri neden kullanılır?

Opak sonuç türleri, somut bir türü bir protokolün arkasında gizlemek için some P kullanır. Somut tür bu işlev için sabittir, ancak çağıranlar yalnızca protokol yüzeyini görür.

  • Statik performansı kaybetmeden kapsülleme
  • Üreticiler ve DSL benzeri arayüzler için idealdir

Temel opak üretici

makeUnitCircle() some Shape döndürür. Çağıranlar area() çağırabilir, ancak somut türe güvenemez.

protocol Shape {
    func area() -> Double
}
struct Circle: Shape {
    let r: Double
    func area() -> Double { .pi * r * r }
}
struct Square: Shape {
    let s: Double
    func area() -> Double { s * s }
}

// Opaque factory: callers know it's a Shape, not which one
func makeUnitCircle() -> some Shape {
    Circle(r: 1.0)    // concrete type is hidden
}

let sh = makeUnitCircle()
print(String(format: "%.2f", sh.area()))  // 3.14

İşlev başına sabit

Gizli tür işlev başına sabittir. some Shape döndüren başka bir işlev farklı bir somut türü gizleyebilir.

// Each function using "some Shape" chooses one hidden concrete type.
// Within the same function, it must always be the same concrete type.
func makeSquare(side: Double) -> some Shape {
    Square(s: side)   // fixed to Square for this function
}

let a = makeUnitCircle()
let b = makeUnitCircle()
print(a.area() == b.area())  // true for two unit circles

let q = makeSquare(side: 2)
print(q.area())              // 4.0

Yalnızca tek gizli tür

Kural: opak dönüşlü bir işlev, her yol boyunca aynı somut türü döndürmelidir. Farklı dallar → derleme hatası.

// ❌ This would NOT compile, because different branches return different concrete types:
// func makeShape(flag: Bool) -> some Shape {
//     if flag {
//         return Circle(r: 1)
//     } else {
//         return Square(s: 1) // error: underlying type must be the same
//     }
// }
// Rule: an opaque-returning function must always produce the same concrete type.

Jeneriklerle opak türler

Opak dönüşler jeneriklerle birleştirilebilir. Çağıran Shape görür, siz ise Scaled<Circle> uygulamasını gizli tutarsınız.

// A generic decorator that also conforms to Shape
struct Scaled<S: Shape>: Shape {
    let base: S
    let k: Double
    func area() -> Double { base.area() * k * k }
}

// Factory still hides the concrete generic type
func makeScaledUnitCircle(k: Double) -> some Shape {
    Scaled(base: Circle(r: 1.0), k: k)
}

let s1 = makeScaledUnitCircle(k: 2)
print(s1.area())  // 4 * π

Opak türler ne zaman seçilmeli

Opak türleri şu durumlarda kullanın:

  • Uygulamayı gizlemek ancak statik tür denetimini korumak istediğinizde.
  • Programlama arayüzlerinin somut türleri açığa çıkarmadan bir protokol görünümü (örneğin Shape) döndürmesi gerektiğinde.
  • Jenerik kalırken oluşturucuları birbirine bağlayan işlem hatları/DSL'ler oluşturduğunuzda.

(Sonraki derste varoluşsal türlerle karşılaştırma yapacaksınız.)

Opak sonuç tanımı

Hızlı kontrol: some P neyi garanti eder?

Özet

Özet: Opak sonuç türleri (some P) somut türleri gizler, ancak statik dağıtımı korur. Temel tür işlev başına sabittir; bunları temiz, hızlı ve kapsüllenmiş programlama arayüzleri için kullanın.

Başlamak ücretsiz

Yapay zeka eğitmeniyle Swift öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
122
Dersler
409

Sıkça Sorulan Sorular

“some P (opak sonuç türleri): somut türleri gizleme” dersi ücretsiz mi?

Evet — “some P (opak sonuç türleri): somut türleri gizleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 3 dersten oluşur.

“some P (opak sonuç türleri): somut türleri gizleme” dersinde ne öğreneceğim?

Somut dönüş türünü gizlerken some P döndürün ve P protokolüne uyacağını taahhüt edin; çağıranlar, uygulama ayrıntılarını açığa çıkarmadan statik tür performansından yararlanır. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Swift Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 1. dersidir.

“some P (opak sonuç türleri): somut türleri gizleme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. some P (opak sonuç türleri): somut türleri gizleme
  2. any P (varoluşsal tür): ödünleşimler ve dinamik gönderim
  3. some, any ve generic türler arasında seçim
← Swift Academy Sayfasına Dön