मैं एक ऐसा वर्ग बनाना चाहता हूं जो एक निश्चित प्रोटोकॉल के अनुरूप वस्तुओं को संग्रहीत कर सके। वस्तुओं को टाइप की गई सरणी में संग्रहित किया जाना चाहिए। स्विफ्ट प्रलेखन प्रोटोकॉल के अनुसार प्रकार के रूप में इस्तेमाल किया जा सकता है:
क्योंकि यह एक प्रकार है, आप कई स्थानों पर एक प्रोटोकॉल का उपयोग कर सकते हैं जहां अन्य प्रकार की अनुमति है, जिसमें शामिल हैं:
- एक फ़ंक्शन, विधि या इनिशलाइज़र में पैरामीटर प्रकार या वापसी प्रकार के रूप में
- एक स्थिर, चर या संपत्ति के प्रकार के रूप में
- एक सरणी, शब्दकोश, या अन्य कंटेनर में आइटम के प्रकार के रूप में
हालांकि निम्नलिखित कंपाइलर त्रुटियां उत्पन्न करता है:
प्रोटोकॉल 'SomeProtocol' को केवल एक सामान्य बाधा के रूप में इस्तेमाल किया जा सकता है क्योंकि इसमें स्व या संबद्ध प्रकार की आवश्यकताएं होती हैं
आप इसे कैसे हल करने वाले हैं:
protocol SomeProtocol: Equatable {
func bla()
}
class SomeClass {
var protocols = [SomeProtocol]()
func addElement(element: SomeProtocol) {
self.protocols.append(element)
}
func removeElement(element: SomeProtocol) {
if let index = find(self.protocols, element) {
self.protocols.removeAtIndex(index)
}
}
}