Swift Academy · पाठ

कई गुण रैपर का संयोजन

गुण रैपर को एक के ऊपर एक लगाना और उनके आरंभीकरण क्रम को समझना सीखें।

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

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

स्वागत

एक ही गुणधर्म पर कई गुणधर्म रैपर लगाए जा सकते हैं। क्रम महत्वपूर्ण है — बाहरी रैपर भीतरी रैपरों को लपेटते हैं — और आरंभीकरण का क्रम घोषणा के क्रम का अनुसरण करता है।

रैपरों की परतें

```swift @propertyWrapper struct A { var wrappedValue: Int { didSet { print("A") } } init(wrappedValue: Int) { self.wrappedValue = wrappedValue } } @propertyWrapper struct B { var wrappedValue: Int { didSet { print("B") } } init(wrappedValue: Int) { self.wrappedValue = wrappedValue } } struct S { @A @B var x = 0 } ```

बाहरी रैपर भीतरी रैपर को लपेटता है

जब आप `@A @B var x` लिखते हैं, तो इसका विस्तारित रूप यह होता है: ```swift var _x: A> = A(wrappedValue: B(wrappedValue: 0)) ``` A, B को लपेटता है और B, Int को लपेटता है।

वास्तविक उदाहरण: @NonEmpty + @Trimmed

```swift @propertyWrapper struct Trimmed { var wrappedValue: String { didSet { wrappedValue = wrappedValue.trimmingCharacters(in:.whitespaces) } } init(wrappedValue: String) { self.wrappedValue = wrappedValue.trimmingCharacters(in:.whitespaces) } } @propertyWrapper struct NonEmpty { var wrappedValue: String { didSet { if wrappedValue.isEmpty { wrappedValue = "(empty)" } } } init(wrappedValue: String) { self.wrappedValue = wrappedValue.isEmpty ? "(empty)" : wrappedValue } } struct Form { @NonEmpty @Trimmed var username = " " } ```

प्रारंभ का क्रम

रैपरों को सबसे बाहरी से सबसे भीतरी क्रम में प्रारंभ किया जाता है। इसका अर्थ है कि बाहरी रैपर के init को मूल मान नहीं, बल्कि भीतरी रैपर के रूपांतरण का परिणाम मिलता है।

रैपरों की परतों की सीमाएँ

• सभी रैपर आसानी से एक-दूसरे के साथ संयोजित नहीं होते — जाँच लें कि `wrappedValue` के प्रकार मेल खाते हैं • Swift कंपाइलर हमेशा एक से अधिक रैपरों की अनुमति नहीं दे सकता (यह wrapped type की संगतता पर निर्भर करता है) • `projectedValue` तक पहुँचने पर `$x` केवल सबसे बाहरी रैपर के प्रक्षेपण तक पहुँचता है

SwiftUI उदाहरण: @EnvironmentObject + परिवर्तन-अवलोकन

SwiftUI एक ही प्रॉपर्टी पर `@EnvironmentObject` और `@Published` की परतें बनाने की अनुमति नहीं देता, लेकिन आप ऐसे `@EnvironmentObject` मॉडल का अवलोकन कर सकते हैं जो आंतरिक रूप से `@Published` का उपयोग करते हैं।

परतदार रैपरों की डीबगिंग

रैपर इंस्टेंस तक सीधे पहुँचने के लिए `_propertyName` का उपयोग करें: ```swift print(form._username) // A> — the outer wrapper instance ```

विकल्प: एक रैपर के भीतर संयोजन

अक्सर एक ही रैपर के भीतर तर्क को संयोजित करना अधिक साफ़ होता है: ```swift @propertyWrapper struct CleanUsername { var wrappedValue: String { didSet { wrappedValue = clean(wrappedValue) } } func clean(_ s: String) -> String { let t = s.trimmingCharacters(in:.whitespaces) return t.isEmpty ? "(empty)" : t } } ```

रैपरों की परतों के व्यावहारिक पैटर्न

आम मान्य संयोजन: • `@UserDefault` + `@Published` (डेटा का स्थायी भंडारण + परिवर्तन-अवलोकन) • `@NonNegative` + `@Clamped` (सत्यापन की परतें) • फ्रेमवर्क-विशिष्ट: SwiftUI दृश्यों में `@Environment` + `@Binding`

त्वरित जाँच

जब दो प्रॉपर्टी रैपर एक साथ लगाए जाते हैं, तो पहले किसे प्रारंभ किया जाता है?

पुनरावलोकन

मुख्य बातें: • `@A @B var x` का विस्तारित रूप `A>` होता है • बाहरी रैपर को भीतरी रैपर का wrappedValue इनपुट के रूप में मिलता है • `$x` केवल सबसे बाहरी projectedValue तक पहुँचता है • `_x` सीधे रैपर इंस्टेंस तक पहुँचता है • जहाँ संभव हो, रैपरों की गहरी परतों के बजाय एकल संयोजित रैपर को प्राथमिकता दें पाठ्यक्रम पूरा हुआ! अगला: परिणाम प्रकार।
शुरुआत निःशुल्क

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

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

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

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

क्या “कई गुण रैपर का संयोजन” पाठ निःशुल्क है?

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

“कई गुण रैपर का संयोजन” में मैं क्या सीखूँगा?

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

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

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

“कई गुण रैपर का संयोजन” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. कस्टम गुण रैपर बनाना
  2. $binding के साथ प्रक्षेपित मान
  3. @Published और Combine में ऑब्ज़र्वेशन
  4. कई गुण रैपर का संयोजन
← Swift Academy पर वापस जाएँ