0Pricing
Swift Academy · Ders

Hata Ayıklamaya Uygun Türler Oluşturma

Açıklamaları ve yansımayı etkili biçimde birleştirin.

Hata Ayıklamaya Uygun Türler Oluşturma, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 4. 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 4 dersten oluşur.

Araçları Birleştirme

En iyi türlerin incelenmesi kolaydır. Değerlerin anlaşılır biçimde yazdırılması ve gerektiğinde iç yapılarının ortaya çıkarılması için CustomStringConvertible, CustomDebugStringConvertible ve Mirror bileşenlerini birleştirin.

Temiz bir description

Kullanıcıya gösterilecek çıktıyla başlayın:

struct Vector: CustomStringConvertible {
    let x: Double
    let y: Double
    var description: String { "(\(x), \(y))" }
}
print(Vector(x: 1, y: 2))  // (1.0, 2.0)

Tanı Amaçlı debugDescription Ekleme

Hata ayıklama için ayrıntı ekleyin:

struct Vector: CustomStringConvertible, CustomDebugStringConvertible {
    let x: Double
    let y: Double
    var description: String { "(\(x), \(y))" }
    var debugDescription: String { "Vector(x: \(x), y: \(y), len: \(length))" }
    var length: Double { (x * x + y * y).squareRoot() }
}
debugPrint(Vector(x: 3, y: 4))  // Vector(x: 3.0, y: 4.0, len: 5.0)

Mirror ile description'ı Otomatik Oluşturma

Her alanı elle listelemeden bir description oluşturmak için yansımayı kullanın:

struct Auto: CustomStringConvertible {
    let a = 1
    let b = "x"
    var description: String {
        let fields = Mirror(reflecting: self).children
            .map { "\($0.label ?? "_")=\($0.value)" }
            .joined(separator: ", ")
        return "Auto(\(fields))"
    }
}
print(Auto())  // Auto(a=1, b=x)

Yeniden Kullanılabilir Bir Yansıma Yardımcısı

Mirror mantığını serbest bir işlev hâline getirerek birçok türün aynı hata ayıklama biçimlendiricisini paylaşmasını sağlayın.

Paylaşılan describe Yardımcı İşlevi

Her yerde yeniden kullanılan tek bir yardımcı işlev:

func reflectiveDescription(_ value: Any) -> String {
    let name = String(describing: type(of: value))
    let parts = Mirror(reflecting: value).children
        .map { "\($0.label ?? "_"): \($0.value)" }
        .joined(separator: ", ")
    return "\(name)(\(parts))"
}
struct P { let id = 7; let tag = "z" }
print(reflectiveDescription(P()))  // P(id: 7, tag: z)

Protokol Varsayılan Uygulaması

Bir protokol uzantısı aracılığıyla bütün bir tür ailesine yansımaya dayalı hata ayıklama olanağı sağlayın:

protocol Inspectable: CustomStringConvertible {}
extension Inspectable {
    var description: String {
        let parts = Mirror(reflecting: self).children
            .map { "\($0.label ?? "_")=\($0.value)" }
            .joined(separator: ", ")
        return "\(type(of: self))[\(parts)]"
    }
}
struct Widget: Inspectable { let w = 10; let h = 20 }
print(Widget())  // Widget[w=10, h=20]

İç İçe Değerleri Güzel Yazdırma

Çocuk öğeler de yazdırılabilir olduğunda yansıma doğal olarak iç içe ilerler:

struct Inner: CustomStringConvertible { let v = 1; var description: String { "Inner(\(v))" } }
struct Outer: CustomStringConvertible {
    let inner = Inner()
    var description: String { "Outer(\(inner))" }
}
print(Outer())  // Outer(Inner(1))

Swift dump Kullanımı

Yerleşik dump, derin ve girintili bir ağacı yazdırmak için Mirror'ı kullanır — hızlı incelemeler için kullanışlıdır:

struct Node { let id = 1; let kids = [2, 3] }
dump(Node())
// - id: 1
// - kids: 2 elements ...

Her Şeyi Bir Araya Getirme

Özenle hazırlanmış bir tür: temiz bir description, zengin hata ayıklama bilgisi ve yansımaya dayalı geri dönüş — günlüğe kaydetmesi ve hata ayıklaması kolay.

struct Order: CustomStringConvertible, CustomDebugStringConvertible {
    let id: Int
    let total: Double
    var description: String { "Order #\(id)" }
    var debugDescription: String { "Order(id: \(id), total: \(total))" }
}
let o = Order(id: 5, total: 9.99)
print(o)       // Order #5
debugPrint(o)  // Order(id: 5, total: 9.99)

Alanları Yansıma Yoluyla Sayma

Yansıma, özellikleri saymak gibi hızlı yapısal doğrulamalar için de kullanışlıdır:

struct Profile { let name = "A"; let age = 1; let city = "X" }
let fieldCount = Mirror(reflecting: Profile()).children.count
print("Profile has \(fieldCount) fields")  // Profile has 3 fields

Hızlı Kontrol

Her özelliği elle listelemeden bir description nasıl oluşturabilirsiniz?

Özet

Hata ayıklamayı kolaylaştıran türler oluşturmayı öğrendiniz:

  • description (temiz) ile debugDescription (ayrıntılı) bileşenlerini birleştirin
  • Çocuk öğelerden description'ları otomatik oluşturmak için Mirror kullanın
  • Yansımayı bir yardımcı işlev veya protokol varsayılan uygulaması hâline getirin
  • dump, hızlı inceleme için derinlikli yansıtılmış bir ağaç yazdırır

Kurs tamamlandı!

Sıkça Sorulan Sorular

“Hata Ayıklamaya Uygun Türler Oluşturma” dersi ücretsiz mi?

Evet — “Hata Ayıklamaya Uygun Türler Oluşturma” 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 4 dersten oluşur.

“Hata Ayıklamaya Uygun Türler Oluşturma” dersinde ne öğreneceğim?

Açıklamaları ve yansımayı etkili biçimde birleştirin. 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, 4 dersinin 4. dersidir.

“Hata Ayıklamaya Uygun Türler Oluşturma” 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. CustomStringConvertible
  2. CustomDebugStringConvertible
  3. Mirror ile Yansıma
  4. Hata Ayıklamaya Uygun Türler Oluşturma
← Swift Academy Sayfasına Dön