@Thomas Schar के उत्तर को लागू करना। स्विफ्ट प्रोटोकॉल जादू विस्तार से आता है।
- स्विफ्ट प्रोटोकॉल विस्तार (स्विफ्ट
2) के माध्यम से कार्यान्वयन प्राप्त कर सकते हैं । जावा 8 इंटरफ़ेस में डिफ़ॉल्ट कार्यान्वयन हो सकते हैं, लेकिन इसे "पूर्वव्यापी रूप से नहीं किया जा सकता है।"
- स्विफ्ट में, आप
किसी भी वर्ग या संरचना में प्रोटोकॉल आवश्यकताओं (और यदि आवश्यक हो तो इसके कार्यान्वयन) को जोड़ सकते हैं ।
- स्विफ्ट प्रोटोकॉल जेनेरिक (यानी <..>) अनुकूलन पैटर्न का पालन नहीं करते हैं, लेकिन एक टाइपेलियास स्कीम (यानी एसोसिएटेड प्रकार)। शुरुआत में भ्रमित हो सकते हैं, लेकिन
कुछ मामलों में "कोण ब्रैकेट अंधापन" से बच सकते हैं।
- स्विफ्ट में एक उन्नत प्रकार का पैटर्न मिलान है, जहां प्रोटोकॉल आवश्यकताओं और एक्सटेंशन को लागू करने के लिए बहुत विशिष्ट होने की अनुमति मिलती है। जावा से आने पर यह भ्रमित हो सकता है, लेकिन इसमें बहुत शक्ति है।
- एक स्विफ्ट प्रोटोकॉल एक संपत्ति / परम (यानी उत्सवकर्ता: प्रोटोकॉल) के लिए बनाया जा सकता है
एक बात जो मुझे कुछ घंटों के लिए अपने सिर को खरोंचने के लिए मिली, वह यह है कि सभी प्रोटोकॉल का उपयोग संपत्ति के प्रकार के रूप में नहीं किया जा सकता है। उदाहरण के लिए, यदि आपके पास टाइपेलियास के साथ एक प्रोटोकॉल है, तो आप इसे सीधे एक प्रकार की संपत्ति के रूप में उपयोग नहीं कर सकते हैं (जब आप इसके बारे में सोचते हैं तो यह समझ में आता है, लेकिन जावा से हम वास्तव में उपयोगकर्ताडॉ: आईडीओ जैसी संपत्ति चाहते हैं)।