मुझे नहीं लगता कि यह किया जा सकता है लेकिन मैं वैसे भी पूछूंगा।एक प्रोटोकॉल पर स्विफ्ट समेकनीय
protocol X {}
और एक वर्ग:: मैं एक प्रोटोकॉल है
class Y:X {}
मेरी कोड के बाकी में मैं प्रोटोकॉल एक्स का उपयोग कर कि कोड में सब कुछ का उल्लेख मैं कुछ करने के लिए सक्षम होने के लिए चाहते हैं जैसे:
let a:X = ...
let b:X = ...
if a == b {...}
समस्या यह है कि अगर मैं लागू करने के लिए कोशिश Equatable
:
protocol X: Equatable {}
func ==(lhs:X, hrs:X) -> Bool {
if let l = lhs as? Y, let r = hrs as? Y {
return l.something == r.something
}
return false
}
प्रोटोकॉल के पीछे कार्यान्वयन छुपाते हुए ==
के उपयोग को आजमाने और अनुमति देने का विचार।
स्विफ्ट इसे पसंद नहीं करता है क्योंकि Equatable
में Self
संदर्भ हैं और यह अब मुझे इसे एक प्रकार के रूप में उपयोग करने की अनुमति नहीं देगा। केवल एक सामान्य तर्क के रूप में।
तो क्या किसी को प्रोटोकॉल पर एक ऑपरेटर को लागू करने का कोई तरीका नहीं मिला है, बिना किसी प्रोटोकॉल को एक प्रकार के रूप में अनुपयोगी बनने के बिना?
धन्यवाद। मैं एक वर्ग में प्रोटोकॉल एक्सटेंशन को बाधित करने से बचने की कोशिश कर रहा हूं क्योंकि (और शायद यह एक बुरा विचार है लेकिन यह मेरे मामले के लिए काम करता है) मेरे पास प्रोटोकॉल के विभिन्न कार्यान्वयन हैं जो असल में एक ही बात का संदर्भ लेते हैं, इसलिए मैं उन्हें चाहूंगा बराबर माना जाता है। – drekka