Swift Academy · पाठ

टाइप पैरामीटर की बाधाएँ

जेनेरिक पैरामीटरों से अनुरूपता आवश्यक कीजिए।

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

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

generic प्रकारों का पुनरावलोकन

कोई generic फ़ंक्शन <T> जैसे प्रकार पैरामीटर का उपयोग करता है, इसलिए वह कई प्रकारों के साथ काम कर सकता है। लेकिन बिना प्रतिबंध वाला T केवल आगे भेजा जा सकता है, उसकी जाँच नहीं की जा सकती। प्रतिबंध अतिरिक्त क्षमताएँ उपलब्ध कराते हैं।

func identity<T>(_ x: T) -> T { x }
print(identity(5))
print(identity("hi"))

तुलनीयता प्रतिबंध

<T: Comparable> लिखने से यह सुनिश्चित होता है कि T के मान <, > और उनसे मिलते-जुलते ऑपरेटरों का समर्थन करते हैं, इसलिए आप उनकी तुलना कर सकते हैं।

func largest<T: Comparable>(_ a: T, _ b: T) -> T {
    a > b ? a : b
}
print(largest(3, 9))
print(largest("apple", "pear"))

प्रतिबंधों की आवश्यकता क्यों है

Comparable के बिना कंपाइलर a > b को अस्वीकार कर देता है, क्योंकि हर प्रकार इसका समर्थन नहीं करता। प्रतिबंध वह आश्वासन है जो इस कार्रवाई को वैध बनाता है।

func minOf<T: Comparable>(_ list: [T]) -> T? {
    list.min()
}
print(minOf([4, 2, 8])!)

समानता-योग्यता प्रतिबंध

Equatable == और != को सक्षम करता है। इसका उपयोग मिलते-जुलते तत्वों की गिनती करने या उन्हें खोजने के लिए करें।

func count<T: Equatable>(_ x: T, in list: [T]) -> Int {
    list.filter { $0 == x }.count
}
print(count(2, in: [2, 3, 2, 2]))

हैश-योग्यता प्रतिबंध

Hashable आपको मानों का उपयोग Set के सदस्यों या शब्दकोश की कुंजियों के रूप में करने देता है।

func unique<T: Hashable>(_ list: [T]) -> [T] {
    Array(Set(list))
}
print(unique([1, 1, 2, 3, 3]).sorted())

प्रोटोकॉल प्रतिबंध

कोई भी प्रोटोकॉल प्रतिबंध बन सकता है। यहाँ एक कस्टम प्रोटोकॉल generic पैरामीटर पर अपनी विधि उपलब्ध कराता है।

protocol Speaker { func speak() -> String }
struct Dog: Speaker { func speak() -> String { "Woof" } }

func announce<T: Speaker>(_ x: T) {
    print(x.speak())
}
announce(Dog())

class प्रतिबंध

आप यह आवश्यक कर सकते हैं कि T किसी विशेष class से विरासत में मिला हो, जिससे उस class के सदस्यों तक पहुँच मिलती है।

class Animal { func name() -> String { "animal" } }
class Cat: Animal { override func name() -> String { "cat" } }

func describe<T: Animal>(_ x: T) { print(x.name()) }
describe(Cat())

एकाधिक प्रतिबंध

एक साथ कई प्रोटोकॉल आवश्यक करने के लिए प्रतिबंधों को & से मिलाएँ।

func show<T: CustomStringConvertible & Equatable>(_ a: T, _ b: T) {
    print(a.description, a == b)
}
show(5, 5)

एकाधिक प्रकार पैरामीटर

किसी फ़ंक्शन में कई प्रतिबंधित पैरामीटर हो सकते हैं, जिनमें से प्रत्येक की अपनी आवश्यकताएँ होती हैं।

func zipMap<K: Hashable, V>(_ keys: [K], _ vals: [V]) -> [K: V] {
    var d: [K: V] = [:]
    for (k, v) in zip(keys, vals) { d[k] = v }
    return d
}
print(zipMap(["a", "b"], [1, 2]))

प्रकारों पर प्रतिबंध

केवल फ़ंक्शन ही नहीं, generic प्रकार भी प्रतिबंध लेते हैं। कोई generic संरचना यह आवश्यक कर सकती है कि उसका पैरामीटर किसी प्रोटोकॉल के अनुरूप हो।

struct SortedBox<T: Comparable> {
    var items: [T]
    var smallest: T? { items.min() }
}
print(SortedBox(items: [5, 1, 9]).smallest!)

संख्यात्मक प्रतिबंध

Numeric जैसे मानक प्रोटोकॉल generic कोड को Int, Double और अन्य प्रकारों पर अंकगणित करने देते हैं।

func sum<T: Numeric>(_ list: [T]) -> T {
    list.reduce(0, +)
}
print(sum([1, 2, 3]))
print(sum([1.5, 2.5]))

त्वरित जाँच

प्रकार पैरामीटर प्रतिबंधों की अपनी समझ जाँचें।

पुनरावलोकन

प्रकार पैरामीटर प्रतिबंध (<T: Protocol> या <T: SomeClass>) कंपाइलर को बताते हैं कि कोई generic प्रकार क्या कर सकता है। आपने Comparable, Equatable, Hashable, Numeric, कस्टम प्रोटोकॉल, class प्रतिबंध, & से जुड़े एकाधिक प्रतिबंध और generic प्रकारों पर लगाए गए प्रतिबंध देखे।

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

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

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

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

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

क्या “टाइप पैरामीटर की बाधाएँ” पाठ निःशुल्क है?

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

“टाइप पैरामीटर की बाधाएँ” में मैं क्या सीखूँगा?

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

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

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

“टाइप पैरामीटर की बाधाएँ” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

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