Swift Academy · पाठ

some, any और जेनेरिक्स में चुनाव

समान स्थिर टाइपिंग के लिए जेनेरिक्स , किसी निश्चित ठोस प्रकार को छिपाने के लिए some P , और विषम बहुरूपता के लिए any P चुनिए।

पाठ 3, कुल 3 में से8 चरण

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

किसका उपयोग कब करें?

सामान्य नियम:

  • जेनेरिक: प्रत्येक कॉल में एक ही ठोस प्रकार; सर्वोत्तम संकलन-समय जाँच और प्रदर्शन।
  • some P: ठोस रिटर्न प्रकार छिपाएँ, जो प्रति फ़ंक्शन निश्चित रहे।
  • any P: अनुरूप प्रकारों को मिलाएँ (विषम), गतिशील dispatch का उपयोग करें।

जेनेरिक: समरूप

जेनेरिक समरूप डेटा और अनुकूलन (स्थैतिक dispatch, इनलाइनिंग) के लिए आदर्श हैं।

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 } }

// Generic: one concrete Shape type per call site (homogeneous)
func totalAreaGeneric<S: Sequence, T: Shape>(_ xs: S) -> Double where S.Element == T {
    xs.reduce(0) { $0 + $1.area() }
}
print(totalAreaGeneric([Circle(r:1), Circle(r:2)]))  // OK
// totalAreaGeneric([Circle(r:1), Square(s:2)])      // ❌ different types

अपारदर्शी: छिपा हुआ, लेकिन निश्चित

some P एक निश्चित लेकिन छिपा हुआ प्रकार लौटाता है। जब आप स्थैतिक प्रदर्शन खोए बिना एनकैप्सुलेशन चाहते हों, तब यह उपयोगी है।

// Opaque factory hides the concrete type while guaranteeing Shape
func unitShape(flag: Bool) -> some Shape {
    // Must return the SAME underlying type on all paths; pick one.
    Circle(r: 1)
}
let s = unitShape(flag: true)
print(String(format: "%.2f", s.area()))  // 3.14

any P: विषम

any P एक ही संग्रह या चर में मिश्रित प्रकार रखने देता है; विधियाँ प्रोटोकॉल इंटरफ़ेस के माध्यम से गतिशील रूप से dispatch होती हैं।

// Existential: store mixed conformers
let mixed: [any Shape] = [Circle(r: 1), Square(s: 2)]
let sum = mixed.reduce(0) { $0 + $1.area() }   // dynamic dispatch
print(String(format: "%.2f", sum))

एपीआई के रूपों की तुलना

उपयुक्त सार्वजनिक रूप चुनें:

  • जेनेरिक: कॉल करने वाला ठोस प्रकार नियंत्रित करता है।
  • अपारदर्शी: आप प्रकार छिपाते हैं, जो प्रति फ़ंक्शन निश्चित रहता है।
  • एग्ज़िस्टेंशियल: आप ठोस प्रकारों को गतिशील रूप से बदल सकते हैं।
// Three API shapes for the same idea: "make a Shape"

// 1) Generic return — exposes concrete type to caller
func makeGeneric<T: Shape>(_ t: T) -> T { t }

// 2) Opaque return — hides concrete type but fixed
func makeOpaqueCircle() -> some Shape { Circle(r: 1) }

// 3) Existential return — can return any conformer
func makeExistential(_ big: Bool) -> any Shape { big ? Square(s: 3) : Circle(r: 1) }

let g: Circle = makeGeneric(Circle(r: 2))      // caller knows concrete type
let o = makeOpaqueCircle()                      // caller sees only Shape
let e = makeExistential(true)                   // could be Circle or Square at runtime
print(g.area(), o.area(), e.area())

त्वरित संदर्भ-पत्र

दिशानिर्देश:

  • जब डेटा समरूप हो, तो प्रदर्शन और सशक्त टाइपिंग के लिए जेनेरिक को प्राथमिकता दें।
  • रिटर्न प्रकार छिपाने और एपीआई को स्थिर रखने के लिए some P का उपयोग करें।
  • प्लगइन-जैसे या मिश्रित संग्रहों के लिए any P का उपयोग करें।
  • संबद्ध प्रकारों/Self वाले प्रोटोकॉल के लिए any P से बचें, जब तक कि आप टाइप इरेज़र का उपयोग न करें।

निर्णय जाँच: some/any/जेनेरिक चुनें

त्वरित जाँच: कौन-सा विकल्प प्रोटोकॉल P के पीछे एक निश्चित ठोस रिटर्न प्रकार छिपाता है?

पुनरावलोकन

पुनरावलोकन:

  • जेनेरिक = समरूप, सबसे तेज़, सबसे अधिक स्थैतिक।
  • some P = ठोस प्रकार छिपाएँ, प्रति फ़ंक्शन निश्चित।
  • any P = विषम, गतिशील dispatch।
शुरुआत निःशुल्क

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

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

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

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

क्या “some, any और जेनेरिक्स में चुनाव” पाठ निःशुल्क है?

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

“some, any और जेनेरिक्स में चुनाव” में मैं क्या सीखूँगा?

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

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

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

“some, any और जेनेरिक्स में चुनाव” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. some P (अपारदर्शी परिणाम प्रकार): ठोस प्रकार छिपाना
  2. any P (एक्ज़िस्टेंशियल): समझौते और डायनेमिक डिस्पैच
  3. some, any और जेनेरिक्स में चुनाव
← Swift Academy पर वापस जाएँ