Swift Academy · पाठ

CustomDebugStringConvertible

अधिक समृद्ध डिबग आउटपुट उपलब्ध कराइए।

पाठ 2, कुल 4 में से13 चरण

CustomDebugStringConvertible, CoddyKit पर Swift Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Swift Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

एक अलग डीबग दृश्य

CustomDebugStringConvertible, debugDescription प्रदान करता है — इसका उपयोग debugPrint, LLDB के po कमांड और डीबगर द्वारा किया जाता है। यह description से अधिक विस्तृत हो सकता है।

debugDescription जोड़ना

अनुरूपता घोषित करें और यह गुणधर्म प्रदान करें:

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 बनाम print

print description का उपयोग करता है; debugPrint debugDescription का उपयोग करता है:

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)

दोनों कब प्रदान करें

साफ़ उपयोगकर्ता आउटपुट के लिए description और नैदानिक विवरण के लिए debugDescription का उपयोग करें (कच्चे मान, आंतरिक स्थिति)। दोनों प्रदान करने से प्रत्येक संदर्भ का सर्वोत्तम उपयोग होता है।

डीबग में अधिक विवरण

उन आंतरिक बातों को दिखाएँ जिन्हें उपयोगकर्ताओं को नहीं देखना चाहिए:

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)

संग्रहों में डीबग आउटपुट

किसी संग्रह पर debugPrint चलाने पर प्रत्येक तत्व का debugDescription उपयोग होता है:

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:) description का उपयोग करता है, उसी तरह String(reflecting:) debugDescription का उपयोग करता है:

struct Code: CustomDebugStringConvertible {
    let n: Int
    var debugDescription: String { "Code<\(n)>" }
}
print(String(reflecting: Code(n: 7)))  // Code<7>

वैकल्पिक व्यवहार

यदि कोई प्रकार केवल description प्रदान करता है, तो debugPrint उसी पर निर्भर हो जाता है। यदि वह केवल debugDescription प्रदान करता है, तो सामान्य print अब भी डिफ़ॉल्ट मिरर रूप का उपयोग करता है:

struct Only: CustomStringConvertible {
    let v: Int
    var description: String { "Only(\(v))" }
}
debugPrint(Only(v: 3))  // Only(3)  -- falls back to description

डीबग आउटपुट में उद्धरण

ध्यान दें कि किसी String पर debugPrint उद्धरण चिह्न जोड़ता है, जो उसके डीबग स्वभाव को दर्शाता है:

print("hi")        // hi
debugPrint("hi")   // "hi"

जानकारी उजागर किए बिना नैदानिक विवरण

गुप्त जानकारी को description से बाहर रखें, लेकिन केवल तभी debugDescription में शामिल करें जब लॉग सुरक्षित हों। सोच-समझकर तय करें कि प्रत्येक गुणधर्म क्या प्रकट करेगा।

struct Key: CustomStringConvertible {
    let secret: String
    var description: String { "Key(***)" }
}
print(Key(secret: "abc"))  // Key(***)

एनम के लिए डीबग विवरण

एनम के लिए ऐसा debugDescription उपयोगी होता है जो कच्चे केस और उसके डेटा को दिखाए:

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)

त्वरित जाँच

description के बजाय कौन-सा फ़ंक्शन debugDescription का उपयोग करता है?

पुनरावलोकन

आपने CustomDebugStringConvertible सीखा:

  • नैदानिक आउटपुट के लिए var debugDescription: String प्रदान करें
  • इसका उपयोग debugPrint, String(reflecting:) और डीबगर करते हैं
  • print description का उपयोग करता है; debugPrint debugDescription का उपयोग करता है
  • अतिरिक्त आंतरिक विवरण डीबग में और साफ़ पाठ description में रखें

अगला विषय: Mirror के साथ रिफ़्लेक्शन।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Swift सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
122
पाठ
409

अक्सर पूछे जाने वाले प्रश्न

क्या “CustomDebugStringConvertible” पाठ निःशुल्क है?

हाँ — Swift Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “CustomDebugStringConvertible” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“CustomDebugStringConvertible” में मैं क्या सीखूँगा?

अधिक समृद्ध डिबग आउटपुट उपलब्ध कराइए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Swift Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Swift Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Swift Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“CustomDebugStringConvertible” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Swift Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Swift Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. CustomStringConvertible
  2. CustomDebugStringConvertible
  3. Mirror से रिफ़्लेक्शन
  4. डिबग-अनुकूल प्रकार बनाना
← Swift Academy पर वापस जाएँ