nil || false
रिटर्न false
और false || nil
रिटर्न nil
देता है। क्या किसी के पास इसके लिए स्पष्टीकरण है?शून्य || झूठी और झूठी || रूबी
उत्तर
रूबी में, सबकुछ एक अभिव्यक्ति है, और एक अभिव्यक्ति इसके भीतर मूल्यांकन किए गए अंतिम मूल्य को वापस कर देगी।
आपके दोनों उदाहरणों के लिए, ||
अभिव्यक्ति के बाईं ओर एक झूठी मान का मूल्यांकन करता है, इसलिए रुबी फिर दायीं तरफ मूल्यांकन करता है, और इसे वापस करता है।
का मूल्यांकन आपका स्पष्टीकरण वास्तव में स्पष्ट है, धन्यवाद! – user1538814
||
मूल्यांकन की गई अंतिम अभिव्यक्ति का परिणाम देता है। यदि यह एलएचएस का मूल्यांकन करता है और true
मान पाता है, तो आपको एलएचएस मिल जाता है; अन्यथा, आपको आरएचएस मिल जाता है (कोई फर्क नहीं पड़ता कि आरएचएस क्या हो सकता है)।
यह वास्तव में एक अच्छा स्पष्टीकरण था, धन्यवाद! – user1538814
जैसा कि अन्य ने बताया, ||
पहले बाईं ओर अभिव्यक्ति का मूल्यांकन करता है। यदि यह "सत्य" है (false
या nil
को छोड़कर कुछ भी), तो यह वापस आता है। अन्यथा, यह दाईं ओर अभिव्यक्ति का मूल्यांकन करता है, और इसे वापस करता है (कोई फर्क नहीं पड़ता कि यह क्या है)।
यह ||
केवल बूलियन परीक्षणों से बहुत अधिक के लिए उपयोगी बनाता है। उदाहरण के लिए, मैं सिर्फ यह दूसरे दिन का इस्तेमाल किया जब chronic
मणि के लिए कुछ कोड लिखने:
@now = options[:now] || Chronic.time_class.now
इसका मतलब है कि: "अगर options
हैश एक :now
मूल्य भी शामिल है, की दुकान है कि @now
में नहीं तो, वापस Chronic.time_class.now
पर गिर जाते हैं। डिफ़ॉल्ट रूप से"। मुझे यकीन है कि आप अपने कार्यक्रमों में बहुत से संभावित अनुप्रयोगों के बारे में सोच सकते हैं।
&&
समान है: यह पहले बाईं ओर अभिव्यक्ति का मूल्यांकन करता है, और यदि यह false
या nil
का मूल्यांकन करता है, तो यह वापस आता है। अन्यथा, यह दाईं ओर अभिव्यक्ति का मूल्यांकन करता है, और इसे वापस करता है (कोई फर्क नहीं पड़ता कि यह क्या है)।
इसका मतलब है &&
केवल बूलियन परीक्षणों से बहुत अधिक के लिए उपयोगी है। आप कोड की दो पंक्तियों को एक में निचोड़ने के लिए इसका उपयोग कर सकते हैं। उदाहरण के लिए:
do_something && do_something_else
(ही काम करता है कि अगर आप जानते हैं कि do_something
के रिटर्न मान false
या nil
कभी नहीं होगा!)
तुम भी &&
उपयोग कर सकते हैं एक ही पर एक "गार्ड" अभिव्यक्ति निचोड़ करने के लिए यह क्या है के रूप में लाइन "की रखवाली":
message && send_message(message)
कौन सा बदल सकते:
unless message.nil?
send_message(message)
end
मैं अभी भी रूबी सीख रहा हूं लेकिन यह वास्तव में सहायक है। – user1538814
- 1. झूठी
- 2. jquery: event.stopImmediatePropagation() बनाम झूठी झूठी
- 3. Django - खाली = झूठी, आवश्यक = झूठी
- 4. एसक्यूएल झूठी
- 5. सत्य/झूठी
- 6. झूठी साझाकरण और परमाणु चर
- 7. "जोर दें झूठी" और "self.assertFalse"
- 8. सी # सच्चाई और झूठी मूल्य
- 9. झूठी साझाकरण और ढेर चर
- 10. SipManager.isApi समर्थित() और SipManager.isVoipSupported() झूठी
- 11. ProgressEvent.lengthComputable झूठी क्यों है?
- 12. विनफॉर्म बटन: क्या दृश्यमान = झूठी लागू = झूठी है?
- 13. PHP file_get_contents झूठी
- 14. पहचान विनिर्देश झूठी
- 15. getBoolean (EXTRA_NO_CONNECTIVITY) हमेशा झूठी
- 16. sd.canWrite() हमेशा रिटर्न झूठी
- 17. HttpContext.Current.User.IsInRole (roleName) हमेशा झूठी
- 18. isProviderEnabled (LocationManager.NETWORK_PROVIDER) वापसी झूठी
- 19. SKPaymentQueue canMakePayments हमेशा झूठी
- 20. कृपया .call (झूठी)
- 21. साइनएडएक्सएमएल चेकसिग्नेचर झूठी
- 22. PHP in_array() हमेशा झूठी
- 23. .setAttribute ("अक्षम", झूठा); झूठी
- 24. FtpClient storeFile हमेशा झूठी
- 25. ओरेकल में, '=' 'झूठी क्यों है?
- 26. अगर (! यह) {वापसी झूठी; }
- 27. string.matches ("। *") रिटर्न झूठी
- 28. जब ThreadPool.QueueUserWorkItem रिटर्न झूठी
- 29. लौटने strtotime झूठी
- 30. mod_security झूठी सकारात्मक
बोनस अंक के लिए क्यों 'शून्य || झूठी और झूठी || nil' झूठे – pguardiario
@pguardiario http://stackoverflow.com/questions/1840488/operator-precedence-for-and-in-ruby – x1a4