इस बयान from Apple document पर एक नज़र है? आप जानते हैं कि यह nil
नहीं हो सकता है क्योंकि आप इसे 9 मान निर्दिष्ट कर रहे हैं? एक वैकल्पिक प्रकार (जैसा कि मैं समझता हूं) का उद्देश्य nil.
को पकड़ने में सक्षम होना है optionalInt
को इस कथन में nil
रखने की आवश्यकता नहीं है। क्या कोई समझा सकता है?आप निरंतर मूल्य के साथ एक वैकल्पिक प्रकार का उपयोग क्यों करेंगे?</p> <pre><code>let optionalInt: Int? = 9 </code></pre> <p>क्यों आप इस निरंतर के लिए प्रकार के रूप में <code>Int?</code> का प्रयोग करेंगे:
उत्तर
मुझे एक ऐसा मामला मिला जहां आप इसका उपयोग कर सकते हैं। यह एक खिंचाव का थोड़ा सा है, लेकिन यहां हम जाते हैं।
let x: Int? = whatever
का उपयोग करने का एक कारण यह है कि यदि आपके पास ओवरलोडेड फ़ंक्शन है जहां पैरामीटर अलग-अलग प्रकार हैं, केवल एक ही वैकल्पिक है। उदाहरण के लिए:
func doSomething(x: Int)
{
print("\(x) is an Int")
}
func doSomething(x: Int?)
{
print("\(x) is an optional")
}
यदि आप सुनिश्चित करना चाहते हैं कि दूसरा अधिभार कहा जाता है, तो आपको पैरामीटर को स्पष्ट रूप से वैकल्पिक बनाना होगा।
let y = 5
doSomething(y) // prints 5 is an Int
let z: Int? = 6
doSomething(z) // prints Optional(6) is an optional
मुझे अभी तक वास्तविक जीवन में ऐसा कुछ नहीं दिख रहा है।
ऐप्पल दस्तावेज के संबंध में, यह एक साधारण उदाहरण है।
यह एक खिंचाव का थोड़ा सा है, लेकिन इससे पहले कि हम चलो एक्स: इंट का उपयोग करने के लिए एक बेहतर कारण खोज सकें? = जो भी हो, अब तक यह सबसे अच्छा जवाब है। शायद, इसके लिए कोई अच्छा कारण नहीं है। ऐप्पल सिर्फ एक बुरे उदाहरण के साथ सचित्र। –
एक जोड़े को विचार:
आप मान लिया जाये कि एक विधि
func foo(xValue: Int?)->Int? {
// some logic
}
शायद आप वास्तव में विधि परिभाषा से मेल खाने के लिए अपने निरंतर परिभाषित करने के लिए चाहते हैं।
let optionalInt: Int? = 9
let fooVal = foo(optionalInt)
या (अपने प्रारंभिक let
बयान बदल रहा है), निरंतर का मूल्य एक फ़ंक्शन है कि एक वैकल्पिक
let optionalInt: Int? = foo(nil)
उपरोक्त foo उदाहरण में, क्या आप एक इंट निरंतर के साथ foo कॉल कर सकते हैं? पूर्णांक = 9 जाने fooVal = foo (nonOptionalInt) आप foo इस तरह से फोन नहीं कर सकते, तो AgRizzo वैकल्पिक के रूप में एक मूल्य के साथ एक निरंतर घोषित करने के लिए एक वैध कारण बताया है: nonOptionalInt करते हैं। क्या कोई टिप्पणी कर सकता है? –
मैंने अभी एक प्रयोग चलाया है। फ़ंक्शन foo (xValue: Int?) के लिए, यदि आप पैरा int को पैरामीटर के रूप में मानते हैं, तो यह अभी भी काम करता है। तो, AgRizzo मेरे प्रश्न के लिए एक वैध कारण प्रदान नहीं किया था। –
@AndrewF। - मैंने आपको दो कारण प्रदान किए हैं। आप मेरे कारणों को पसंद नहीं कर सकते हैं लेकिन आपने साबित नहीं किया कि मेरे कारण अमान्य थे। आपने साबित किया कि एक इंट को वैकल्पिक रूप से वैकल्पिक इंट में डाला जा सकता है। – AgRizzo
मैं सेब दस्तावेज़ के इस विशेष अंग बस उदाहरण देकर स्पष्ट करने का इरादा है लगता है से निर्धारित होता है विकल्प की अवधारणा और कुछ भी नहीं। वे let
का उपयोग let
गुण/चर घोषित करने के साथ हमेशा अच्छे अभ्यास से let
का उपयोग करते हैं और केवल उन्हें अपने मूल्यों को बदलने की स्पष्ट आवश्यकता होने पर var
पर स्विच करते हैं।
सवाल के रूप में क्यों कोई let foo: Int? = 9
घोषित करेगा और न केवल let foo = 9
। खैर, मैं वास्तव में कल्पना नहीं कर सकता कि इसकी आवश्यकता होगी। यहां तक कि अगर कुछ एपीआई Int?
की अपेक्षा करता है तो भी आप Int
के एक चर को इस तरह के एपीआई में टाइप कर सकते हैं और स्विफ्ट निश्चित रूप से इसे आपके लिए परिवर्तित कर देगा। शायद, यदि आप इसे एक सामान्य कार्य में पास करते हैं और आप उस जेनेरिक के Int?
संस्करण का उपयोग करना चाहते हैं तो आप ऐसा करना चाहेंगे, लेकिन यह व्यावहारिक उपयोग करने के लिए पहले से ही अकादमिक है।
यह सही उत्तर है। एक वैकल्पिक बनाने के लिए कभी बेहतर नहीं होता है जब आप जानते हैं कि मान कभी भी 'शून्य 'नहीं होगा। अन्य उत्तरों में दूर-दूर का उदाहरण भी आवश्यक होने पर एक स्पष्ट कलाकार के साथ बेहतर होगा। – Sulthan
- 1. कक्षा में निरंतर << स्वयं ब्लॉक
- 2. प्रकार Nullable <int>
- 3. 'ऑपरेटर <<' के लिए 'std :: cout <<' में अस्पष्ट अधिभार <<
- 4. रिटर्न प्रकार std :: वैकल्पिक <std :: variant <...>>
- 5. नेस्टेड प्रकार के प्रकार के लिए वैकल्पिक अभिव्यक्ति <Func<T>>
- 6. BOOST_CHECK कस्टम प्रकार के लिए ऑपरेटर <<
- 7. ऑपरेटर के साथ पूर्णांक पदोन्नति <<
- 8. "अस्थिर प्रकार: int() <str()"
- 9. विचारों में <% और <% = दोनों का उपयोग क्यों करें?
- 10. ओवरलोडिंग ऑपरेटर << सरणियों के लिए
- 11. गुम निरंतर और "const_missing" अंदर "वर्ग << स्व" परिभाषा
- 12. <: <, <% <, =: = कंपाइलर में काम का स्केल कार्यान्वयन वास्तव में कैसे करता है?
- 13. <% $, <% @, <% =, <% # ... सौदा क्या है?
- 14. PHP में <<< ईओडी का उपयोग क्या है?
- 15. जोड़ी <int, int> और कस्टम ऑपरेटर के साथ BOOST_CHECK_EQUAL <<
- 16. <? के बजाय php <?
- 17. रीडायरेक्टर "<<<"?
- 18. GIT भ्रष्ट फ़ाइलें (<<<<<<<< HEAD)
- 19. सूची का एक प्रकार <CustomClass>
- 20. प्रकार 'Async <string []>' प्रकार 'seq <'a>'
- 21. एनालॉग के `<<% ~` Traversal
- 22. चैनल प्रकार में '<-' क्यों है?
- 23. वैकल्पिक <Integer> को वैकल्पिक <Long>
- 24. अधिभार ऑपरेटर << सरणी के लिए
- 25. जावा में, बिट्सफिफ्ट का उपयोग करते समय, 1 << 32! = 1 << 31 << 1 क्यों होता है?
- 26. अदालत << चार * तर्क प्रिंट तार के साथ, मूल्य
- 27. <<बजाय << स्ट्रीम आउटपुट में संकलन क्यों करता है?
- 28. प्रकार 'System.Linq.IQueryable <int>' to 'int'
- 29. std :: endl अज्ञात प्रकार का है <<
- 30. c3p0.idle_test_period का उपयोग।</p> <pre><code>c3p0.idle_test_period </code></pre> <p>इस लिंक में:
क्या आप ऐप्पल के दस्तावेज़ के पृष्ठ को लिंक कर सकते हैं जहां आपको कोड की उस पंक्ति को मिला? इससे हमें अधिक कुशलतापूर्वक उत्तर देने का संदर्भ मिलेगा। – RaphBlanchet
@RaphBlanchet मुझे यह मिला; [वैकल्पिक विकल्प पेश करते समय इसे एक पंक्ति उदाहरण के रूप में उपयोग किया जाता है] (https://developer.apple.com/library/ios/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson1.html#//apple_ref/doc/uid/TP40015214-CH3-SW1)। –
यहां दस्तावेज़ का एक लिंक है: https://developer.apple.com/library/ios/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson1।एचटीएमएल # // apple_ref/doc/uid/TP40015214-CH3-SW1 "वैकल्पिकInt" के लिए खोजें। यह सिर्फ एक पंक्ति उदाहरण है, लेकिन मुझे उम्मीद है कि उदाहरण समझेंगे। –