दिलचस्प पोस्ट
स्टाइलिंग पाठ इनपुट कैरेट '$ (यह)' की लागत क्या है? इकाई फ़्रेमवर्क और कनेक्शन पूलिंग ऑब्जेक्ट संदर्भ प्राप्त करने के लिए डॉट नोटेशन में स्ट्रिंग में कनवर्ट करें IIS 7 AppPool पहचान SQL सर्वर लॉगऑन के रूप में जोड़ें पीछे वाले शून्य निकालें का उपयोग करने के बीच कोई महत्वपूर्ण अंतर क्या है / else और switch-case सी # में है? jQuery स्क्रॉल पेज / iframe के नीचे स्क्रॉल करें जावास्क्रिप्ट विंडो का आकार बदलना घटना जावास्क्रिप्ट गुण का उपयोग: डॉट नेशन बनाम ब्रैकेट्स? कैसे एक WordPress शोर्ट में AJAX का उपयोग करें? मैं एक बटन जैसा एक HTML लिंक कैसे बना सकता हूं? फेसबुक ग्राफ़ एपीआई, उपयोगकर्ताओं को ईमेल कैसे प्राप्त करें? JSP के लिए कक्षा संकलित करने में असमर्थ: प्रकार java.util.Map $ Entry का समाधान नहीं किया जा सकता। यह अप्रत्यक्ष रूप से आवश्यक वर्ग वर्गों से संदर्भित है मैं कैसे (या मैं) एकाधिक कॉलम पर अंतर का चयन कर सकता हूँ?

स्विफ्ट 3 ग़लत स्ट्रिंग इंटरप्रोलेशन जिसमें अन्तर्निहित अवांछित विकल्प हैं

स्विफ्ट 3 में स्ट्रिंग प्रक्षेप का उपयोग करते समय क्यों अनवरहित विकल्प नहीं उठाए जाते हैं?

उदाहरण : खेल के मैदान में निम्नलिखित कोड चलाना

var str: String! str = "Hello" print("The following should not be printed as an optional: \(str)") 

इस उत्पादन का उत्पादन करता है:

 The following should not be printed as an optional: Optional("Hello") 

बेशक मैं + ऑपरेटर के साथ तार जोड़ सकते हैं, लेकिन मैं अपने ऐप में बहुत ज्यादा हर जगह स्ट्रिंग प्रक्षेप का उपयोग कर रहा हूं जो अब इस (बग के कारण) अब काम नहीं करता है?

क्या यह भी एक बग है या क्या उन्होंने जानबूझकर स्विफ्ट 3 के साथ इस व्यवहार को बदल दिया?

वेब के समाधान से एकत्रित समाधान "स्विफ्ट 3 ग़लत स्ट्रिंग इंटरप्रोलेशन जिसमें अन्तर्निहित अवांछित विकल्प हैं"

एसई -0054 के अनुसार, ImplicitlyUnwrappedOptional अब एक अलग प्रकार नहीं है। इसके बजाय, यह अब एक नियमित Optional – यह सिर्फ एक विशेषता है जो कम्पाइलर को उन स्थितियों में खोलने को मजबूर करने की अनुमति देता है जहां इसे एक के रूप में चेक नहीं किया जा सकता

प्रस्ताव के अनुसार (जोर दिया मेरा):

अगर अभिव्यक्ति स्पष्ट रूप से एक मजबूत वैकल्पिक प्रकार के साथ चेक की जा सकती है, तो यह हो जाएगा । हालांकि, यदि आवश्यक हो तो वैकल्पिक रूप से मजबूर करने के लिए टाइप चेकर वापस आ जाएगा। इस व्यवहार का असर यह है कि किसी भी अभिव्यक्ति का परिणाम जिसे T! रूप में घोषित किया गया है T! या तो T प्रकार या T प्रकार होगा T?

इसका क्या मतलब यह है कि जब ये टाइप इंफॉर्मेशन की बात आती है, तो संकलक हमेशा एक वैकल्पिक के रूप में एक अनपेक्षित अवांछित वैकल्पिक टाइपिंग का एहसास करेगा, बजाय इसे खोलना। हालांकि, जब एक स्पष्ट प्रकार की एनोटेशन प्रदान की जाती है, तो यह व्यवहार ओवरराइड किया जाएगा।

जब यह प्रक्षेपण स्ट्रिंग की बात आती है, तो हुड के तहत संकलक स्ट्रिंग प्रक्षेप सेगमेंट का मूल्यांकन करने के लिए _ExpressibleByStringInterpolation प्रोटोकॉल से प्रारंभकर्ता को उपयोग करता है:

 /// Creates an instance containing the appropriate representation for the /// given value. /// /// Do not call this initializer directly. It is used by the compiler for /// each string interpolation segment when you use string interpolation. For /// example: /// /// let s = "\(5) x \(2) = \(5 * 2)" /// print(s) /// // Prints "5 x 2 = 10" /// /// This initializer is called five times when processing the string literal /// in the example above; once each for the following: the integer `5`, the /// string `" x "`, the integer `2`, the string `" = "`, and the result of /// the expression `5 * 2`. /// /// - Parameter expr: The expression to represent. init<T>(stringInterpolationSegment expr: T) 

चूंकि यह प्रारंभिक एक सामान्य पैरामीटर (कोई स्पष्ट प्रकार की एनोटेशन) का उपयोग नहीं करता है, तो संकलक पैरामीटर T को अनुमानित करने में सक्षम है, एक अन्तर्निहित अदृश्य वैकल्पिक इनपुट के लिए वैकल्पिक, इसलिए इसका अर्थ है कि यह बल बंद नहीं किया जाएगा

इसके विपरीत, यदि आप उदाहरण के लिए print() लेते हैं print() जो किसी Any पैरामीटर (एक स्पष्ट, यद्यपि सार प्रकार एनोटेशन) लेता है, तो संकलक IUO इनपुट को Optional प्रकार के रूप में समझा नहीं पाएगा , और इसलिए यह निहित रूप से बल दिया जाएगा unwrapped।

यदि आप स्ट्रिंग प्रक्षेप में उपयोग किए जाने पर IUO को बलपूर्वक खोलने के लिए चाहते हैं, तो आप केवल बल खोलने वाले ऑपरेटर का उपयोग कर सकते हैं ! :

 var str: String! str = "Hello" print("The following should not be printed as an optional: \(str!)") 

या आप अपने गैर-वैकल्पिक प्रकार (इस मामले में String ) को डालने के क्रम में संकलक को मजबूती से बलपूर्वक अपने लिए खोल सकते हैं:

 print("The following should not be printed as an optional: \(str as String)") 

दोनों, जो निश्चित रूप से दुर्घटनाग्रस्त हो जाएंगे, यदि str nil