CustomDebugStringConvertible
Daha zengin hata ayıklama çıktısı sağlayın.
CustomDebugStringConvertible, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 2. 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.
Ayrı Bir Hata Ayıklama Görünümü
CustomDebugStringConvertible, debugDescription sağlar; bu, debugPrint, LLDB po komutu ve hata ayıklayıcı tarafından kullanılan temsildir. Bu temsil, description özelliğinden daha ayrıntılı olabilir.
debugDescription Ekleme
Uyumluluk sağlayın ve özelliği sunun:
struct Point: CustomDebugStringConvertible {
let x: Int
let y: Int
var debugDescription: String { "Point(x: \(x), y: \(y))" }
}
debugPrint(Point(x: 1, y: 2)) // Point(x: 1, y: 2)debugPrint ile print Karşılaştırması
print, description özelliğini; debugPrint ise debugDescription özelliğini kullanır:
struct Money: CustomStringConvertible, CustomDebugStringConvertible {
let cents: Int
var description: String { "$\(Double(cents)/100)" }
var debugDescription: String { "Money(cents: \(cents))" }
}
let m = Money(cents: 250)
print(m) // $2.5
debugPrint(m) // Money(cents: 250)İkisini Ne Zaman Sağlamalı?
Temiz kullanıcı çıktısı için description, tanılama ayrıntıları (ham değerler ve dahili durum) için debugDescription kullanın. İkisini de sağlamak, her bağlamın avantajlarından yararlanmanızı sağlar.
Hata Ayıklamada Daha Fazla Ayrıntı
Kullanıcıların görmemesi gereken dahili ayrıntıları gösterin:
struct Session: CustomStringConvertible, CustomDebugStringConvertible {
let user: String
let token: String
var description: String { "Session(\(user))" }
var debugDescription: String { "Session(user: \(user), token: \(token))" }
}
let s = Session(user: "ann", token: "xyz")
print(s) // Session(ann)
debugPrint(s) // Session(user: ann, token: xyz)Koleksiyonlarda Hata Ayıklama Çıktısı
Bir koleksiyonda debugPrint kullanıldığında her öğenin debugDescription özelliği kullanılır:
struct Tag: CustomDebugStringConvertible {
let name: String
var debugDescription: String { "Tag(\(name))" }
}
debugPrint([Tag(name: "a"), Tag(name: "b")]) // [Tag(a), Tag(b)]String(reflecting:)
String(describing:) işlevinin description özelliğini kullanması gibi, String(reflecting:) de debugDescription özelliğini kullanır:
struct Code: CustomDebugStringConvertible {
let n: Int
var debugDescription: String { "Code<\(n)>" }
}
print(String(reflecting: Code(n: 7))) // Code<7>Geri Dönüş Davranışı
Bir tür yalnızca description sağlarsa, debugPrint buna geri döner. Yalnızca debugDescription sağlarsa, düz print yine varsayılan yansıma biçimini kullanır:
struct Only: CustomStringConvertible {
let v: Int
var description: String { "Only(\(v))" }
}
debugPrint(Only(v: 3)) // Only(3) -- falls back to descriptionHata Ayıklama Çıktısında Tırnak İşaretleri
Bir String için debugPrint kullanıldığında tırnak işaretleri eklendiğine dikkat edin; bu, hata ayıklama niteliğini yansıtır:
print("hi") // hi
debugPrint("hi") // "hi"Sızdırmadan Tanılama
Gizli bilgileri description dışında tutun; ancak günlükler güvenliyse bunlara yalnızca debugDescription içinde izin verin. Her birinin neyi açığa çıkaracağını bilinçli şekilde seçin.
struct Key: CustomStringConvertible {
let secret: String
var description: String { "Key(***)" }
}
print(Key(secret: "abc")) // Key(***)Bir Numaralandırma İçin Hata Ayıklama Ayrıntısı
Numaralandırmalar, ham durumu ve yükü açığa çıkaran bir debugDescription özelliğinden yararlanır:
enum Load: CustomDebugStringConvertible {
case idle
case progress(Int)
var debugDescription: String {
switch self {
case .idle: return "Load.idle"
case .progress(let p): return "Load.progress(\(p))"
}
}
}
debugPrint(Load.progress(40)) // Load.progress(40)Hızlı Kontrol
description yerine debugDescription özelliğini hangi işlev kullanır?
Özet
CustomDebugStringConvertible öğrendiniz:
- Tanılama çıktısı için
var debugDescription: Stringsağlayın debugPrint,String(reflecting:)ve hata ayıklayıcı tarafından kullanılırprint,descriptionözelliğini;debugPrintisedebugDescriptionözelliğini kullanır- Ek dahili ayrıntıları hata ayıklama görünümüne, temiz metni description özelliğine koyun
Sıradaki konu: Mirror ile yansıtma.
Sıkça Sorulan Sorular
“CustomDebugStringConvertible” dersi ücretsiz mi?
Evet — “CustomDebugStringConvertible” 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.
“CustomDebugStringConvertible” dersinde ne öğreneceğim?
Daha zengin hata ayıklama çıktısı sağlayın. 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 2. dersidir.
“CustomDebugStringConvertible” 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
- CustomStringConvertible
- CustomDebugStringConvertible
- Mirror ile Yansıma
- Hata Ayıklamaya Uygun Türler Oluşturma