2016-09-16 31 views
6

C# जब मौजूदा कोड के साथ नाम टकराव का एक बहुत है कि एक पुस्तकालय में खींच में, वहाँ आयात अन्य नाम पर तो आप पूरी तरह से प्रत्येक उपयोग के लिए नाम स्थान को स्पष्ट करने की जरूरत नहीं है एक तरीका है। उदाहरण के लिए:क्या आयात को उपनाम करना संभव है?

using MyCompany.MyLibrary.Model as MMM 

तो आप

MMM.MyObject 
बजाय

MyCompany.MyLibrary.Model.MyObject 
तेज 3.0 हाल ही में अद्यतन के साथ

कर सकता है, मैंने पाया अपने मॉडल वस्तुओं में से कुछ अब के साथ टकराने कर रहे हैं Foundation प्रकार, और मैं चीजें हैं जो Foundation.classname साथ वर्ग के नाम में एक NS उपसर्ग किया करते थे उपसर्ग के लिए मजबूर किया गया है। यह बहुत अच्छा है कि अगर मैं उर्फ ​​अपने मॉडल पुस्तकालय के आयात ज्यादा टाइप कर सकते हैं C# ऊपर दिए गए उदाहरण की तरह होगा। क्या यह तेज़ 3.0 में संभव है? यदि नहीं वहाँ एक और रणनीति नाम टकराव कि प्रत्येक प्रकार के सामने ढांचे नाम लिखने के लिए होने में परिणाम होगा से बचने के लिए है? मैं अपनी क्लास के नाम लगाकर जैसे हम Obj सी में किया था के लिए जा रहा पर विचार कर रहा हूँ, लेकिन मैं अपने विकल्पों को देखने से पहले मैं ऐसा कोशिश कर रहा हूँ।

उत्तर

7

आम तौर पर

आप विशेष इकाई के साथ-साथ पूरे मॉड्यूल आयात कर सकते हैं:

import struct­ SomeModule.SomeStruct 
import class­ SomeModule.SomeClass 
import func SomeModule.someFunc 

"आयात योग्य" इकाई प्रकार in the import-kind rule of Swift grammar की पूरी सूची देखें।

typealias SMSomeStruct = SomeModule.SomeStruct 

और, स्विफ्ट 3 के रूप में, वहाँ कोई import घोषणा अलियासिंग के साथ संयुक्त है:

तो फिर तुम एक typealias बना सकते हैं।

टकराव को ध्यान में रखते Foundation साथ संस्थाओं

कहते हैं, आप एक वर्ग SomeModule.NumberFormatter है।

यह (एक आयात परियोजना में) टकराव को रोकने के लिए एक अलग स्विफ्ट फ़ाइल में दो typealias तों बनाने के लिए पर्याप्त है: स्विफ्ट 3 के रूप में

import Foundation 
import SomeModule 

typealias NumberFormatter = Foundation.NumberFormatter 
typealias SMNumberFormatter = SomeModule.NumberFormatter 
+0

? मेरा मानना ​​है कि यह सुविधा शुरुआत से ही स्विफ्ट में थी। – Sulthan

+1

मुझे लगता है कि आप सही हैं। "स्विफ्ट 3 के रूप में" लिखने के लिए मुख्य कारण था कि मुझे यकीन है कि क्या यह स्विफ्ट 4+ में सच हो जाएगा नहीं हो सकता। मैंने पहले "स्विफ्ट 3 के रूप में" हटा दिया, क्योंकि यह लगभग असंभव है कि ऐप्पल भाषा से फीचर को हटा देगा। –

+0

उत्तर के लिए बहुत बढ़िया धन्यवाद! –

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