Swift Academy · पाठ

अनुबंध के रूप में प्रोटोकॉल

प्रकारों से स्वतंत्र व्यवहार के अनुबंध परिभाषित कीजिए।

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

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

प्रोटोकॉल क्या है

एक प्रोटोकॉल उन विधियों, गुणधर्मों और अन्य आवश्यकताओं का खाका निर्धारित करता है जिन्हें उसके अनुरूप प्रकार को लागू करना आवश्यक है। यह एक अनुबंध है: इसे अपनाने वाला हर प्रकार प्रोटोकॉल में घोषित सभी चीज़ें उपलब्ध कराने का वादा करता है।

protocol Greetable {
    var name: String { get }
    func greet() -> String
}

प्रोटोकॉल के अनुरूप होना

कोई प्रकार प्रोटोकॉल अपनाकर और उसकी हर आवश्यकता पूरी करके उसके अनुरूप होता है। यहाँ एक संरचना name गुणधर्म और greet() विधि, दोनों को पूरा करती है।

protocol Greetable {
    var name: String { get }
    func greet() -> String
}

struct Person: Greetable {
    let name: String
    func greet() -> String { "Hello, I am " + name }
}

let p = Person(name: "Ada")
print(p.greet())

गुणधर्म की आवश्यकताएँ

प्रोटोकॉल यह निर्दिष्ट करते हैं कि कोई गुणधर्म केवल पढ़ने योग्य ({ get }) होना चाहिए या पढ़ने और लिखने, दोनों योग्य ({ get set })। संग्रहीत या गणना किया गया गुणधर्म केवल-पठन की आवश्यकता पूरी कर सकता है।

protocol Identifiable {
    var id: String { get }
}

struct User: Identifiable {
    let id: String
}

print(User(id: "u-1").id)

विधि की आवश्यकताएँ

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

protocol Shape {
    func area() -> Double
}

struct Square: Shape {
    let side: Double
    func area() -> Double { side * side }
}

print(Square(side: 3).area())

mutating की आवश्यकताएँ

मान प्रकारों के लिए, self को बदलने वाली विधियों पर mutating चिह्नित होना आवश्यक है। आवश्यकता को mutating के साथ घोषित कीजिए, ताकि संरचनाएँ उसे पूरा कर सकें।

protocol Toggleable {
    mutating func toggle()
}

struct Switch: Toggleable {
    var isOn = false
    mutating func toggle() { isOn.toggle() }
}

var s = Switch()
s.toggle()
print(s.isOn)

प्रोटोकॉल के रूप में प्रकार

प्रोटोकॉल प्रथम-श्रेणी का प्रकार होता है। आप इसका उपयोग चर, पैरामीटर और लौटाए जाने वाले मानों के लिए कर सकते हैं और किसी भी अनुरूप मान को स्वीकार कर सकते हैं।

protocol Animal { func sound() -> String }
struct Dog: Animal { func sound() -> String { "Woof" } }
struct Cat: Animal { func sound() -> String { "Meow" } }

let animals: [Animal] = [Dog(), Cat()]
for a in animals { print(a.sound()) }

प्रोटोकॉल के माध्यम से बहुरूपता

प्रोटोकॉल की विधि को बुलाने पर प्रेषण उस मान के पीछे मौजूद ठोस प्रकार की ओर होता है। इससे आप एक ही अनुबंध के माध्यम से कई प्रकारों पर काम करने वाला कोड लिख सकते हैं।

protocol Describable { func describe() -> String }
struct Book: Describable { let t: String; func describe() -> String { "Book: " + t } }
struct Film: Describable { let t: String; func describe() -> String { "Film: " + t } }

func show(_ d: Describable) { print(d.describe()) }
show(Book(t: "Swift"))
show(Film(t: "Inception"))

आरंभकर्ता की आवश्यकताएँ

प्रोटोकॉल आरंभकर्ताओं की माँग कर सकते हैं। कक्षाओं को कार्यान्वयन पर required चिह्न लगाना आवश्यक है, ताकि उपवर्ग भी उसे उपलब्ध कराएँ।

protocol FromInt {
    init(value: Int)
}

struct Wrapper: FromInt {
    let value: Int
    init(value: Int) { self.value = value }
}

print(Wrapper(value: 42).value)

प्रोटोकॉल का वंशानुक्रम

कोई प्रोटोकॉल एक या अधिक अन्य प्रोटोकॉल से विरासत में मिल सकता है और विरासत में मिली आवश्यकताओं के ऊपर अतिरिक्त आवश्यकताएँ जोड़ सकता है।

protocol Named { var name: String { get } }
protocol Aged: Named { var age: Int { get } }

struct Member: Aged {
    let name: String
    let age: Int
}

let m = Member(name: "Lin", age: 30)
print(m.name, m.age)

केवल-कक्षा वाले प्रोटोकॉल

किसी प्रोटोकॉल को AnyObject से चिह्नित करके अनुरूपता को कक्षाओं तक सीमित कीजिए। प्रतिनिधायन जैसी संदर्भ-अर्थवाली आवश्यकताओं के लिए यह उपयोगी है।

protocol Counter: AnyObject {
    var count: Int { get set }
}

class Box: Counter {
    var count = 0
}

let b = Box()
b.count = 5
print(b.count)

अनुरूपता की जाँच

रनटाइम पर यह जाँचने के लिए is और as? का उपयोग कीजिए कि कोई मान प्रोटोकॉल के अनुरूप है या नहीं।

protocol Flyer { func fly() }
struct Bird: Flyer { func fly() { print("flap") } }
struct Rock {}

let things: [Any] = [Bird(), Rock()]
for t in things {
    if let f = t as? Flyer { f.fly() } else { print("grounded") }
}

त्वरित जाँच

प्रोटोकॉल की आवश्यकताओं की अपनी समझ जाँचिए।

पुनरावलोकन

आपने सीखा कि प्रोटोकॉल एक अनुबंध है: यह गुणधर्म, विधि, mutating और आरंभकर्ता की आवश्यकताएँ घोषित करता है, लेकिन कार्यान्वयन नहीं देता। प्रकार हर आवश्यकता पूरी करके अनुरूप होते हैं, प्रोटोकॉल का उपयोग बहुरूपता के लिए प्रकारों के रूप में किया जा सकता है, वे अन्य प्रोटोकॉल से विरासत में मिल सकते हैं और AnyObject से उन्हें कक्षाओं तक सीमित किया जा सकता है।

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

एआई शिक्षक के साथ 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. एक्सटेंशन में डिफ़ॉल्ट इम्प्लीमेंटेशन
  3. Protocol Composition
  4. सशर्त अनुरूपता
← Swift Academy पर वापस जाएँ