!
का नाम हमेशा मुझे भ्रमित करता है: इसे 'निस्संदेह अनचाहे वैकल्पिक' कहा जाता है। हालांकि, इसके बारे में क्या निहित है? लागू का मतलब है "हालांकि स्पष्ट रूप से व्यक्त नहीं किया गया है।" हालांकि, !
स्पष्ट रूप से अपना उद्देश्य व्यक्त नहीं कर रहा है? !
जोड़ना स्पष्ट नहीं करता है जिसे हम पूरा करने की कोशिश कर रहे हैं?क्यों है! स्विफ्ट में 'स्पष्ट रूप से' अनचाहे वैकल्पिक के बजाय 'अंतर्निहित' कहा जाता है?
उत्तर
सामान्य वैकल्पिक
var foo : Foo? = Foo()
foo!.doSomething() // explicitly unwrap it and call the method
उलझाव से लपेटा न वैकल्पिक
var foo : Foo! = Foo()
foo.doSomething() // implicitly unwrap it and call the method just like it is not optional
दोनों मामले में, आप एक वैकल्पिक (?
या !
) घोषित करने के लिए कुछ की जरूरत है। स्पष्ट रूप से अनचाहे वैकल्पिक अधिक जोड़ नहीं है। लेकिन जब आप इसका इस्तेमाल करते हैं तो आप अनचाहे ऑपरेटर को छोड़ सकते हैं।
स्विफ्ट में, विस्मयादिबोधक चिह्न (!
) का दो अलग-अलग तरीकों से उपयोग किया जाता है। एक को Forced Unwrapping कहा जाता है। यह वह जगह है आप एक चर एक वैकल्पिक रूप में परिभाषित किया है और आप मूल रूप से जोर देने के लिए है कि मूल्य नहीं के बराबर है, ताकि आप इसका इस्तेमाल कर सकते हैं जैसे कि यह एक वैकल्पिक नहीं थे नहीं है चाहते हैं जब:
var optionalName: String? = "World"
if optionalName != nil {
sayHelloTo(optionalString!)
}
एक वैकल्पिक तरीका है कि आप का वर्णन कर सकता है "फोर्सड अनवरपिंग" "स्पष्टीकरण अनवरिपिंग" है, लेकिन मजबूर अतिरिक्त संकेत जोड़ता है कि अगर आप "अनवर्र को फोर्स" करने का प्रयास करते हैं तो यह पूरा प्रोग्राम दुर्घटनाग्रस्त हो जाएगा।
दूसरी बात यह है कि जब आप वास्तव में एक चर के प्रकार की घोषणा कर रहे हैं और इसे Implicitly Unwrapped Optional कहा जाता है। यह तब होता है जब आप एक वैरिएबल घोषित करना चाहते हैं जो तकनीकी रूप से वैकल्पिक है, लेकिन आप इसका इलाज करेंगे जैसे कि यह वैकल्पिक नहीं है। हर बार जब आप इस उलझाव से लपेटा न वैकल्पिक उपयोग करें, यह वास्तव में है, "सेना unwrapping" कर रहा ऊपर वर्णित:
var name: String! = "World"
if name != nil {
sayHelloTo(name)
}
तुम अब भी शून्य के लिए एक उलझाव से लपेटा न वैकल्पिक परीक्षण कर सकते हैं, लेकिन आप यह भी रूप में यह सीधे उपयोग कर सकते हैं अगर यह वैकल्पिक नहीं था। यही कारण है कि इसे अंतर्निहित माना जाता है। हर बार जब आप इसका इस्तेमाल करते हैं, तो यह स्वचालित रूप से आपके लिए अनदेखा है।
की तरह "मजबूर unwrapping"एक "उलझाव से लपेटा न वैकल्पिक" अभी भी पूरे कार्यक्रम दुर्घटना होगा यदि आप जब यह शून्य
- 1. रूपांतरण निर्माता के बजाय कॉपी कन्स्ट्रक्टर क्यों कहा जाता है?
- 2. इसे शून्य क्यों कहा जाता है?
- 3. कर्नेल को कर्नेल क्यों कहा जाता है?
- 4. व्यवस्थापक का उपयोग करते समय admin.autodiscover() को Django में स्वचालित रूप से क्यों नहीं कहा जाता है, इसे स्पष्ट रूप से क्यों कहा जा सकता था?
- 5. धारावाहिकरण को क्रमबद्धरण क्यों कहा जाता है?
- 6. सी ++ नेमस्पेस - "उपयोग" या स्पष्ट रूप से कहा गया है?
- 7. अचार: उन्हें क्यों कहा जाता है?
- 8. स्पष्ट रूप optionals
- 9. AJAX को एसिंक्रोनस क्यों कहा जाता है?
- 10. क्यों '+ =' स्पष्ट रूप से अनचाहे विकल्प के लिए काम नहीं करता है?
- 11. इसे बीएसओएन क्यों कहा जाता है?
- 12. उपclass विधि क्यों नहीं कहा जाता है?
- 13. पायथन 2: क्यों xrange इरेंज कहा जाता है?
- 14. टीडीडी 'स्पाइक्स' क्यों 'स्पाइक्स' कहा जाता है?
- 15. चालक कन्स्ट्रक्टर क्यों नहीं कहा जाता है?
- 16. इसे "जंग" क्यों कहा जाता है?
- 17. फ़ंक्शन क्यों कहा जाता है? जावास्क्रिप्ट/खिड़की
- 18. willTransitionToTraitCollection नहीं कहा जाता है, क्यों?
- 19. __PRETTY_FUNCTION__ को __PRETTY_FUNCTION__ क्यों कहा जाता है?
- 20. इसे बहुरूपता क्यों कहा जाता है?
- 21. इसे 'स्ट्रिंग' क्यों कहा जाता है?
- 22. चालक कन्स्ट्रक्टर क्यों नहीं कहा जाता है?
- 23. कुकीज को "कुकीज़" क्यों कहा जाता है?
- 24. पासवर्ड नमक क्यों "नमक" कहा जाता है?
- 25. एक छद्म-वर्ग क्यों कहा जाता है?
- 26. बेस क्लास क्यों कहा जाता है?
- 27. $ क्यों है? सिस्टम() के बाद हमेशा 0 कहा जाता है?
- 28. स्विफ्ट 3 गलत स्ट्रिंग इंटरपोलेशन को स्पष्ट रूप से अनचाहे विकल्प के साथ
- 29. viewDidUnload कोDidLoad से कम बार क्यों कहा जाता है?
- 30. अप्रत्याशित अधिभार कोड निम्नलिखित जब समारोह variadic टेम्पलेट इन्स्टेन्शियशन से कहा जाता है कहा जाता है
http://en.wikipedia.org/wiki/Explicit_and_implicit_methods है इसका इस्तेमाल करने की कोशिश – XaxD
अंतर्निहित और स्पष्ट रूप से उनके उपयोग के साथ करना है, न कि उनकी घोषणाओं। आप आगे बढ़ते हैं और 'वैकल्पिक' को अनचाहे नहीं करने का प्रयास करते हैं और इसे सादा 'टी' की तरह उपयोग करते हैं और मेरे पास वापस आते हैं। –
CodaFi
महान सवाल। मैं इसके बारे में सोच रहा था। मैं ऐप्पल डेवलपर्स से पूछा था :) – SoftDesigner