एक दूसरे से बेहतर कब होता है? क्या एक दूसरे की तुलना में तेज़ है या क्या अंतर केवल झूठी या शून्य की वापसी है?क्लोजर में "अगर" और "कब" का उपयोग कब करें?
उत्तर
if
का उपयोग करें जब आपके पास वास्तव में एक सच्चाई और एक झूठा मामला है और आपको do
ब्लॉक की आवश्यकता नहीं है। इसके विपरीत, when
का उपयोग तब किया जाना चाहिए जब आपको केवल सच्चे मामले और अंतर्निहित do
को संभालना होगा। गति में कोई अंतर नहीं है, यह सबसे बेवकूफ शैली का उपयोग करने की बात है।
(if (my-predicate? my-data)
(do-something my-data)
(do-something-else my-data))
(when (my-predicate? my-data)
(do-something my-data)
(do-something-additionally my-data))
if
मामले में, केवल do-something
अगर my-predicate?
एक truthy परिणाम देता है, जबकि when
मामले में, दोनों do-something
और do-something-additionally
क्रियान्वित कर रहे हैं चलाया जाएगा।
if
का उपयोग करें जब आपके पास दो अलग-अलग अभिव्यक्तियां हों: true
खंड और false
खंड के लिए।
when
और when-not
दो मामलों में उपयोगी होते हैं:
- आप एक या कई (अंतर्निहित
do
यहाँ मदद करता है) गैर शुद्ध संचालन सशर्त प्रदर्शन करने के लिए चाहते हैं जब; - जब आप
true
(याfalse
when-not
के मामले में) का अनुमान लगाते हैं तो कुछ मूल्यांकन करना चाहते हैं, और विपरीत मामले मेंnil
लौटाएं।
फर्क सिर्फ इतना है के रूप में, वहाँ
false
औरnil
के बीच कोई बड़ा अंतर यह है झूठी की वापसी या नहीं के बराबर
है दोनों तार्किक संदर्भ में false
का मूल्यांकन।
मैंने क्लोजर और कॉमन लिस्प में 'कब' के उपयोग में एक स्टाइलिस्ट अंतर देखा है। सीएल में, कुछ लोग 'कब' का उपयोग करने में बुरा मानते हैं यदि परीक्षण विफल होने पर आप वापसी मूल्य की परवाह करते हैं; उस स्थिति में आपको 'if' के अंतिम खंड में स्पष्ट रूप से' शून्य 'वापस करना चाहिए। यह समझ में आता है कि एक ही स्थिति में क्लोजर में 'कब' का उपयोग करना आम है, क्योंकि अधिकांश कोड क्लोजर में पूरी तरह कार्यात्मक है: वापसी मूल्यों को शायद ही कभी अनदेखा किया जाता है। यदि क्लोजर प्रोग्रामर सीएल सम्मेलन का पालन करते हैं, तो 'कब' शायद ही कभी पूरी तरह से कार्यात्मक कोड में उपयोग किया जाएगा। (कभी-कभी 'शून्य' बनाम 'झूठा' मामले।) – Mars
@ मर्स, यह दिलचस्प है, क्या क्लोजर में 'झूठी' और 'शून्य 'के सह-अस्तित्व के लिए वास्तविक कारण है? मैं ऐसी स्थिति के बारे में सोच सकता हूं जब 'झूठा' ऐसा कुछ कर सकता है जो 'शून्य' नहीं कर सका। – Mark
मुझे लगता है कि सामान्य विचार यह है: 'शून्य' का अर्थ है "अनुक्रम में कुछ भी नहीं बचा है", जबकि 'झूठी' का मतलब झूठा है। तथ्य यह है कि 'शून्य' का भी अर्थ है झूठी अनुक्रम के अंत के लिए परीक्षण की अनुमति देता है। इसके अलावा, आप चीजें कर सकते हैं जैसे '(get {: a 1: b nil}: c false) '। अधिक चर्चा [यहां] (http://stackoverflow.com/questions/5830571/why-did-father-of-clojure-say-that-chechemes-true-false-are-broken), [यहां] (http://stackoverflow.com/questions/6045404/why-clojure-idiom-prefer-to-return-nil-instead-of-empty-list-like-checheme), [यहां] (http://www.lispcast.com/ नील-पनिंग), और [यहां] (http://clojure.org/lazy)। – Mars
- 1. ट्यूपल का उपयोग कब और कब करें?
- 2. क्लोजर में 'निरंतर' का उपयोग कब करें, इसके तर्कों का मूल्यांकन कब और कब किया जाता है?
- 3. ऑब्जेक्ट्स या क्लोजर - कब उपयोग करें?
- 4. टैग/लेबल का उपयोग कब करें और शाखा कब करें?
- 5. क्लोजर में कब और कब: के बीच क्या अंतर है?
- 6. क्या "डिस्प्ले का उपयोग कब करें: ब्लॉक कब करें: इनलाइन और कब: इनलाइन-ब्लॉक" और क्यों?
- 7. Jquery - "यह" कब उपयोग करें और "$ (यह)" कब उपयोग करें?
- 8. OSGi EventAdmin का उपयोग कब करें और कब नहीं?
- 9. डेटाबेस दृश्यों का उपयोग कब करें और कब नहीं?
- 10. डब्ल्यूसीएफ डेटा सेवाओं का उपयोग कब करें और कब नहीं?
- 11. .mdf और कब .sdf का उपयोग कब करें?
- 12. isInstanceOf का उपयोग कब करें और मैच-केस-स्टेटमेंट (स्कैला में) का उपयोग कब करें?
- 13. डुप्ली का उपयोग कब करें, और रूबी में क्लोन का उपयोग कब करें?
- 14. घटकों का उपयोग कब करें और वाईआई में एक्सटेंशन का उपयोग कब करें?
- 15. वेक्टर का उपयोग कब करें और सी ++ में सरणी का उपयोग कब करें?
- 16. फाइबर का उपयोग कब करें और टारनटूल में सह-दिनचर्या का उपयोग कब करें?
- 17. सी ++ में "नया" और कब नहीं, कब उपयोग करें?
- 18. स्टब्स और मोजे का उपयोग कब करें?
- 19. "window.onload" का उपयोग कब करें?
- 20. स्ट्रिंगबिल्डर का उपयोग कब करें?
- 21. ko.utils.unwrapObservable का उपयोग कब करें?
- 22. IList का उपयोग कब करें और सूची का उपयोग कब करें
- 23. कब ककड़ी का उपयोग करें और आरएसपीईसी का उपयोग कब करें?
- 24. हाइबरनेट फ़ेचिंग रणनीति - "शामिल" का उपयोग कब करें और "चयन करें" का उपयोग कब करें?
- 25. इंटरफेस का उपयोग कब करें, और उच्च आदेश फ़ंक्शंस का उपयोग कब करें?
- 26. viewDidLoad का उपयोग कब करें और awakeFromNib
- 27. "willChangeValueForKey" और "didChangeValueForKey" का उपयोग कब करें?
- 28. क्यों और कब __noop का उपयोग करें?
- 29. IEquatable का उपयोग कब करें और क्यों
- 30. socket.io का उपयोग कब करें और AJAX
क्या होगा यदि मुझे केवल सही मामले को संभालना पड़े, और कोई अंतर्निहित 'डू' की आवश्यकता नहीं है, जो इस मामले में उपयोग करने के लिए अधिक पारंपरिक है? – damonh
'कब' का प्रयोग करें। 'Do' भाग 'if'' को प्राथमिकता देने के लिए एक अतिरिक्त अच्छा कारण है, यदि आवश्यक पूर्व शर्त नहीं है। – schaueho