में शाखाकरण मैं खुद को क्लोजर पढ़ रहा हूं।यदि अन्यथा क्लोजर
गैर-एफपी भाषा में, अगर मैं विशेष रूप से किसी और को नहीं डालता, तो मैं आसानी से नेस्टेड लिख सकता था, और अगर नियंत्रण ब्लॉक से बाहर हो जाता है। उदाहरण के लिए:
Thing myfunc()
{
if(cond1)
{
if(cond2)
return something;
}
return somethingelse;
}
हालांकि, Clojure में, वहाँ कोई वापसी कथन है (है कि मैं के बारे में पता), इसलिए यदि मैं लिखने:
(defn myfunc []
(if (cond1)
(if (cond2) something))
somethingelse)
फिर वहाँ है "कुछ" पर कोई "वापसी"। ऐसा लगता है कि ठीक है, ठीक है, यहां हमारे पास एक मूल्य है, अब चलो निष्पादन जारी रखें। स्पष्ट समाधान की स्थिति, यानी .: गठबंधन करने के लिए
(if (and (cond1) (cond2))
something
somethingelse)
होगा, लेकिन इस बोझल/बदसूरत हो जाता है बड़े स्थितियों के लिए। साथ ही, यह cond1 के "अन्य" भाग में एक बयान जोड़ने के लिए अतिरिक्त समाशोधन लेगा। क्या इसका कोई शानदार समाधान है?
मैं नहीं दिख रहा है कि यह कैसे मिलेगा "बोझल"। क्या आप कुछ उदाहरण पेश कर सकते हैं? – Svante
समस्या जिस पर मैं काम कर रहा था, यह जांच कर रहा था कि दो नंबर दोनों 3 अंक थे। यह लिखने के लिए मुझे बहुत बदसूरत लग रहा था (अगर (और (= 3 (गिनती (str num1)) (= 3 (गिनती (str num2)))) कुछ) – Kricket
लगता है जैसे आपको एक फ़ंक्शन चाहिए! '(तीन def? [num] (= 3 (गिनती (str num))) 'फिर आपको केवल इतना चाहिए' (अगर (और (तीन? num1) (तीन? num2)) कुछ)' – Jeremy