2016 के नवंबर में वापस मैं कारण है कि मैं गार्ड का उपयोग नहीं कर सकता है वैकल्पिक रूप में एक ही नाम का उपयोग कर एक चर का एक unwrapped संस्करण बनाने के लिए, की तरह आप कर सकते हैं पूछ एक प्रश्न पोस्ट करते हैं, तो साथ:'गार्ड चलो foo = foo' कानूनी कब बन गया?
लिंक: Why isn't guard let foo = foo valid?
जब मैं उस सवाल का लिखा है, नीचे दिए गए कोड है कि "पिछले मान के साथ परिभाषा संघर्ष" एक त्रुटि के साथ संकलित करने के लिए विफल हो जाएगा:
//Test of using guard to create an unwrapped version of a var, like if let
func guardTest(_ viewController: UIViewController?) -> UIViewController? {
// Check if the current viewController exists
print(String(describing: viewController))
guard let viewController = viewController else {
return nil
}
print(String(describing: viewController))
return viewController
}
हालांकि, मैं सिर्फ इतना है कि यह करता है काम पर कुछ कोड पाया, और अब यह संकलित करता है शिकायत के बिना और जो मैं चाहता हूं वह करता है! जब चलाने के लिए, प्रिंट बयान बताते हैं कि foo गार्ड से पहले एक वैकल्पिक, और एक unwrapped वैकल्पिक के बाद है:
viewController = Optional(<TrochoidDemo.ViewController: 0x7ff16a039a00>)
viewController = <TrochoidDemo.ViewController: 0x7ff16a039a00>
(मैं अपने नवीनतम खुला स्रोत परियोजना के लिए परीक्षण समारोह guardTest(_:)
कहा कि यदि आप इसे बाहर की कोशिश करना चाहते हैं। यह https://github.com/DuncanMC/TrochoidDemo)
मुझे खुशी है कि इस संरचना अब काम करता है के रूप में मैं यह करना चाहता हूँ हूँ पर Github पर उपलब्ध है, लेकिन क्यों यह अब कानूनी है के रूप में उलझन में है, और जब परिवर्तन हुआ।
क्या किसी को भाषा परिभाषा में हालिया परिवर्तन के बारे में पता है जो इस निर्माण कार्य को बनाता है जहां यह पहले नहीं था?
यह अभी भी फ़ंक्शन में किसी अन्य स्थानीय चर को फिर से परिभाषित करने के लिए काम नहीं करता है। ऐसा लगता है कि स्विफ्ट आपको स्थानीय वैरिएबल बनाने की अनुमति देगा जिसमें फ़ंक्शन में इनपुट पैरामीटर के समान नाम है। मुझे नहीं पता कि यह हमेशा काम करता है, लेकिन 'var a = a' अब इनपुट पैरामीटर को' var' में परिवर्तित करने का तरीका है क्योंकि आप अब फ़ंक्शन हस्ताक्षर में var नहीं डाल सकते हैं। – vacawama
ठीक है, नीचे वोट क्यों? अगर आपको लगता है कि मेरा सवाल खराब है, तो कृपया बताएं क्यों। –
मैंने निश्चित रूप से मतदान किया। कोई भी सवाल जो कुछ चुनौती देता है जिसे मैंने सोचा था कि मैं अच्छी तरह से समझ गया हूं, मेरी किताब में एक अच्छा सवाल है। मेरी इच्छा है कि आपने वोटिंग के दौरान या कम से कम किसी और की रचनात्मक टिप्पणी को वोट देने पर टिप्पणी (रचनात्मक, उम्मीदपूर्वक) टिप्पणी करने के लिए मजबूर किया। – vacawama