2015-11-23 29 views
6

निम्नलिखित पर विचार करें:स्विफ्ट - संबंधित प्रकार प्रोटोकॉल में किस खंड के साथ?

protocol SomeProtocol { 
    typealias F: Foo 
    typealias FB: FooBar where FB.Foo == F 
} 

लेकिन इस संकलन नहीं है क्योंकि हम typealias उस तरह में where खंड नहीं डाल सकते हैं।

मैं कुछ यहाँ याद आ रही किया जाना चाहिए, क्योंकि यह आसानी से type parameterization इस तरह से किया जा सकता:

struct SomeStruct<F: Foo, FB: FooBar where FB.Foo == F> {} 

associated type के लिए where खंड बराबर क्या है?

+1

ऐसा ही एक समस्या यह सवाल का हिस्सा है:: यह अधिक सुविधा जहां आप यह कर सकते हैं कि आप मिलता है http://stackoverflow.com/questions/33843038/define-a-swift-protocol-which-requires -एक विशिष्ट प्रकार के- अनुक्रम। –

+2

आप कुछ भी याद नहीं कर रहे हैं। यह स्विफ्ट में वर्तमान में संभव नहीं है। –

+0

यह राडार के माध्यम से अनुरोध किया गया है: http://openradar.appspot.com/17203060, http://www.openradar.me/21441502, और तेजी से विकास पर उल्लेख किया गया: https://lists.swift.org/pipermail /swift-evolution/Week-of-Mon-20160229/011666.html (शीर्षक "* प्रोटोकॉल में मनमानी आवश्यकताओं" शीर्षक देखें), लेकिन मुझे नहीं लगता कि किसी ने भी एक विकास प्रस्ताव बनाया है। –

उत्तर

0

प्रोटोकॉल में संबंधित प्रकारों का प्रकार पैरामीटरकरण वर्तमान में स्विफ्ट (2.1) में समर्थित नहीं है।

हालांकि इस मामले में आपको कार्यक्षमता के लिए कहां क्लॉज की आवश्यकता नहीं है।

func someFunc<T: SomeProtocol>(someProt: T, foo: T.F) { 
    ... 
} 

// Instead of this: 

func someFunc<T: SomeProtocol>(someProt: T, foo: T.FB.Foo) { 
    ... 
} 
+0

ठीक है, हाँ आप सही हैं। लेकिन यह सादगी के लिए एक विकसित उदाहरण था। हालांकि उत्तर के लिए धन्यवाद! –

+0

@DanielShin जबकि प्रोटोकॉल में क्लॉज अच्छा होगा, लगभग हर मामले में 'अनुक्रम प्रकार ' जैसे सामान्य प्रोटोकॉल समाधान होगा .... स्विफ्ट 3 – Qbyte

+0

@Qbyte हाँ के लिए उम्मीद है। एक सामान्य प्रोटोकॉल, यदि उपलब्ध हो, तो वास्तव में सवाल से 'जेनेरिक' टाइपलीज़ के समान ही है। यह एक ही व्यवहार के लिए सिर्फ अलग वाक्यविन्यास है। जेनेरिक प्रोटोकॉल के लिए बहुत सारे तर्क हैं और उनमें से बहुत सारे हैं। वास्तविक दुनिया में हम सामान्य प्रोटोकॉल के बिना जीवित रहना बहुत आसान कर सकते हैं। अन्य भाषाओं से हमारे स्वयं का अनुवाद करना सबसे खराब है, हम कर सकते हैं। मैं पसंद करता हूं कि स्विफ्ट थोड़ी देर के लिए स्थिर हो जाएगा, मैं बेहतर एक्सकोड समर्थन, रिफैक्टरिंग, मानक लाइब्रेरी का ओपन सोर्स वर्जन, पहले खोज रहा हूं। और अगला, जेनेरिक प्रोटोकॉल 'अतिरिक्त बोनस' के रूप में उपलब्ध होंगे – user3441734

संबंधित मुद्दे

 संबंधित मुद्दे