मैं जब स्विफ्ट में प्रोटोकॉल अनुरूपता को लागू करने, एक ही अंतिम परिणाम के साथ दो विकल्प हैं:स्विफ्ट प्रोटोकॉल को कार्यान्वित करने के लिए कहां?
- वर्ग भीतर प्रोटोकॉल को लागू करें - जो है, राज्य वर्ग परिभाषा के शीर्ष पर अनुरूपता, और कार्यान्वयन डाल कक्षा के शरीर के अंदर, या
- एक्सटेंशन में प्रोटोकॉल को कार्यान्वित करें - यानी कक्षा के बाहर पूरी तरह प्रोटोकॉल अनुरूपता कोड करें।
यहाँ एक उदाहरण है:
public class MyClass : CustomDebugStringConvertible {
... // Something
public var debugDescription : String {
return "MyClass"
}
}
बनाम स्विफ्ट किताबों में
class MyClass {
... // Something
}
extension MyClass : CustomDebugStringConvertible {
public var debugDescription: String {
return "MyClass"
}
}
कोड नमूने पहले दृष्टिकोण पर ध्यान केंद्रित करते हैं; Apple's source code of Swift core बताता है कि वे केवल दूसरे दृष्टिकोण का उपयोग करते हैं (उदाहरण के लिए Bool
और Optional
देखें)।
क्या स्थिति के आधार पर दो दृष्टिकोणों के बीच निर्णय लेने का कोई अच्छा तरीका है, या क्या यह केवल वरीयता पसंद करने का मामला है?
यह पूरी तरह से प्राथमिकता का विषय है, और इस प्रकार राय का विषय है। व्यक्तिगत रूप से मैं लगभग हमेशा बाद में करता हूं, लेकिन बिल्कुल हमेशा नहीं। यहां एक्सटेंशन पर मेरी टिप्पणियां भी देखें: http://www.apeth.com/swiftBook/ch04.html#_extending_object_types – matt