मैंने क्लोजर का उपयोग करके प्रोजेक्ट यूलर को क्लोजर सीखने के पहले स्टैब के रूप में शुरू करना शुरू कर दिया है।क्या यह बेवकूफ क्लोजर है?
नीचे 1000.
3 के सभी गुणकों का योग या 5 का पता लगाएं कि मैंने पहले अजगर में इसका समाधान कर लिया:
sum(i for i in xrange(1000) if i%3==0 or i%5==0)
मैं पहला काम समाधान कर लिया है यह मेरा पहला क्लोजर प्रयास है:
(reduce +
(filter
(fn [x]
(or
(= 0 (mod x 3))
(= 0 (mod x 5))))
(range 1000)))
मुझे वास्तव में यह पता चला है कि यह वर्बोज़ कैसे मिला, लेकिन मैं मुझे यकीन है कि यह मेरी शैली और क्लोजर मुहावरे की अज्ञानता के कारण है।
इस क्लोजर कोड का एक बेवकूफ संस्करण कैसा दिखता है?
बहुत बहुत शुक्रिया, कि यह काफ़ी को साफ! लागू बनाम कम करने का उपयोग करने का लाभ यहां क्या होगा? – gumuz
'+ 'में परिवर्तनीय धैर्य है इसलिए यह हमें कई बार' +' निष्पादित करने से रोकती है। हकीकत में, यह 'कमी' का उपयोग करने के बराबर है क्योंकि एक बार बहस सूची 2 से अधिक हो जाने पर '+' 'कमी 'का उपयोग करती है (' + 'के स्रोत देखें)। इस उदाहरण में, यह वास्तव में मेरी शैली किसी और चीज़ से अधिक है। – Kyle
फिर से धन्यवाद, क्या कुछ स्टाइल गाइड है जो उदाहरण के लिए, आपके द्वारा या तर्कों को गठबंधन करने के तरीके की वकालत करता है? – gumuz