Swift Academy · पाठ

फ़ंक्शन पर where क्लॉज़

जेनेरिक फ़ंक्शन में सूक्ष्म स्तर की बाधाएँ जोड़िए।

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

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

सरल प्रतिबंधों से आगे

<T: Collection> जैसा प्रतिबंध स्वयं T का वर्णन करता है। लेकिन कभी-कभी आपको T के संबद्ध प्रकारों, जैसे उसके Element, पर प्रतिबंध लगाने की आवश्यकता होती है। यही काम where खंड करता है।

func sumInts<C: Collection>(_ c: C) -> Int where C.Element == Int {
    c.reduce(0, +)
}
print(sumInts([1, 2, 3]))

समान-प्रकार आवश्यकता

where C.Element == Int आवश्यक करता है कि संग्रह के तत्व ठीक Int हों, जिससे पूर्णांक-विशिष्ट कार्य किए जा सकें।

func describe<C: Collection>(_ c: C) -> String where C.Element == Int {
    "Sum is " + String(c.reduce(0, +))
}
print(describe(Set([1, 2, 3])))

तत्व पर प्रोटोकॉल आवश्यकता

आप यह आवश्यक कर सकते हैं कि तत्व किसी एक निश्चित प्रकार का होने के बजाय किसी प्रोटोकॉल के अनुरूप हो, जिससे अधिक लचीलापन मिलता है।

func joinAll<C: Collection>(_ c: C) -> String
    where C.Element: CustomStringConvertible {
    c.map { $0.description }.joined(separator: ", ")
}
print(joinAll([1, 2, 3]))

where सिग्नेचर के बाद आता है

where खंड वापसी प्रकार और फ़ंक्शन के मुख्य भाग के बीच होता है। <> के भीतर के प्रतिबंध और where खंड साथ मिलकर काम करते हैं।

func maxElement<C: Collection>(_ c: C) -> C.Element?
    where C.Element: Comparable {
    c.max()
}
print(maxElement([4, 9, 2])!)

दो प्रकार पैरामीटरों के बीच संबंध

where खंड == का उपयोग करके दो अलग-अलग generic प्रकारों के तत्व प्रकारों को आपस में जोड़ सकता है।

func combine<A: Collection, B: Collection>(_ a: A, _ b: B) -> [A.Element]
    where A.Element == B.Element {
    Array(a) + Array(b)
}
print(combine([1, 2], Set([3])))

एकाधिक where शर्तें

संयुक्त प्रतिबंध व्यक्त करने के लिए अल्पविरामों से अलग की गई कई आवश्यकताएँ लिखें।

func report<C: Collection>(_ c: C)
    where C.Element: Comparable, C.Element: CustomStringConvertible {
    if let m = c.max() { print("max:", m.description) }
}
report([5, 1, 9])

नेस्टेड संबद्ध प्रकारों पर प्रतिबंध

नेस्टेड संग्रहों के साथ काम करते समय आप और गहराई तक जा सकते हैं, जैसे किसी तत्व के तत्व पर आवश्यकता लगाना।

func flatten<C: Collection>(_ c: C) -> [Int]
    where C.Element: Collection, C.Element.Element == Int {
    c.flatMap { Array($0) }
}
print(flatten([[1, 2], [3]]))

Equatable तत्वों के साथ where

Equatable तत्वों की आवश्यकता रखने से आप किसी generic संग्रह में खोज कर सकते हैं।

func indexOf<C: Collection>(_ x: C.Element, in c: C) -> C.Index?
    where C.Element: Equatable {
    c.firstIndex(of: x)
}
if let i = indexOf(2, in: [1, 2, 3]) { print("found") }

where वाले generic विधियाँ

generic प्रकारों के भीतर की विधियाँ भी where का उपयोग करती हैं, अक्सर केवल कुछ विशेष तत्व प्रकारों के लिए व्यवहार जोड़ने के लिए।

struct Wrap<T> {
    let items: [T]
    func total() -> Int where T == Int { items.reduce(0, +) }
}
print(Wrap(items: [1, 2, 3]).total())

पठनीयता का लाभ

जटिल प्रतिबंध कोणीय कोष्ठकों में ठूँसने के बजाय where खंड में अधिक स्पष्ट पढ़े जाते हैं, विशेष रूप से तब जब कई संबद्ध-प्रकार की शर्तें हों।

func first<C: Collection>(_ c: C) -> String
    where C.Element: CustomStringConvertible {
    c.first.map { $0.description } ?? "empty"
}
print(first([10, 20]))

मानक लाइब्रेरी में where

अनुक्रमों के अनुक्रमों पर joined() जैसी विधियाँ अपनी आवश्यकताओं को सटीक रूप से व्यक्त करने के लिए आंतरिक रूप से where खंडों का उपयोग करती हैं।

let nested = [[1, 2], [3, 4]]
print(Array(nested.joined()))

त्वरित जाँच

फ़ंक्शनों में where खंडों की अपनी समझ जाँचें।

पुनरावलोकन

where खंड आपको generic के संबद्ध प्रकारों पर प्रतिबंध लगाने देते हैं: किसी तत्व को कोई विशिष्ट प्रकार (== Int) होने, किसी प्रोटोकॉल के अनुरूप होने (: Comparable), दो पैरामीटरों के तत्वों के बीच संबंध होने या नेस्टेड संबद्ध प्रकारों तक पहुँचने की आवश्यकता रख सकते हैं। ये सिग्नेचर के बाद आते हैं और जटिल प्रतिबंधों को पठनीय बनाए रखते हैं।

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

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

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

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

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

क्या “फ़ंक्शन पर where क्लॉज़” पाठ निःशुल्क है?

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

“फ़ंक्शन पर where क्लॉज़” में मैं क्या सीखूँगा?

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

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

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

“फ़ंक्शन पर where क्लॉज़” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. टाइप पैरामीटर की बाधाएँ
  2. फ़ंक्शन पर where क्लॉज़
  3. संबद्ध प्रकारों पर बाधाएँ
  4. जेनेरिक सबस्क्रिप्ट और एक्सटेंशन
← Swift Academy पर वापस जाएँ