में कस्टम प्रकारों के लिए स्पष्ट रूपांतरण परिभाषित करना स्विफ्ट में स्पष्ट रूपांतरणों को परिभाषित करने के लिए वर्तमान में सबसे अच्छा/पसंदीदा तरीका क्या है? मेरे सिर के ऊपर से मैं दो के बारे में सोच सकते हैं:स्विफ्ट
एक विस्तार के माध्यम से गंतव्य प्रकार के लिए कस्टम initializers बनाना, इस तरह:
extension String { init(_ myType: MyType) { self = "Some Value" } }
इस तरह, आप बस
String(m)
इस्तेमाल कर सकते हैं जहां मीटर एम को स्ट्रिंग में कनवर्ट करने के लिएMyType
टाइप करें।, स्रोत प्रकार में
toType
-Methods परिभाषित इस तरह:class MyType { func toString() -> String { return "Some Value" } }
यह स्विफ्ट
String.toInt()
है, जो एकInt?
रिटर्न के बराबर है। लेकिन अगर यह जाने का एक निश्चित तरीका था, तो मैं इसके लिए बुनियादी प्रकारों के लिए प्रोटोकॉल होने की अपेक्षा करता हूं, जैसे पहले से मौजूद*LiteralConvertible
प्रोटोकॉल का उलटा।
उप-प्रश्न: दो विधियों में से कोई भी कुछ इस तरह संकलित करने के लिए अनुमति देते हैं: let s: MyString = myTypeInstance (as String)
(वैकल्पिक कोष्ठक में भाग), लेकिन अगर मैं सही समझ, as
ऑपरेटर ही प्रकार पदानुक्रम के भीतर downcasting के लिए है, कि है सही बात?
ठीक है, धन्यवाद। दस्तावेज शामिल करने के लिए आप में भी अच्छा लगा। मैं इसे लेता हूं कि रूपांतरण के लिए अंतर्निहित प्रकारों के लिए एक्सटेंशन प्रदान करना भी सही काम है? – Kolja
हां, एक्सटेंशन हमारे हाथों में उपकरण है जब हम तृतीय पक्ष प्रकारों में जोड़ रहे हैं। अपने कोड के लिए, यह सिर्फ पाठ्यक्रम की वरीयता का मामला है। कुछ मामलों में एक्सटेंशन का उपयोग करके हमारे कोड को ब्राउज़ करने में अधिक व्यवस्थित और आसान रखने में मदद मिल सकती है। – Antonio
फिर से धन्यवाद। अब मुझे कुछ मामलों के लिए निहित रूपांतरण की आवश्यकता है जहां यह समझ में आता है, लेकिन मुझे स्विफ्ट से नहीं मिलेगा। ;-) – Kolja