गिनती है
मैं करने की सलाह देते हैं इस प्रकार इस को कम के साथ: इस तरह से कम करने का उपयोग कर के लिए
(defn count-truthy [coll]
(reduce (fn [cnt val] (if val (inc cnt) cnt)) 0 coll))
कारण:
- यह और अधिक कुशल होने की संभावना है, और Clojure के नए reducers कार्यक्षमता से लाभ होगा कि इस तथ्य के लिए सक्षम बनाता है कई संग्रह पर कम कर देता है
- यह एक मध्यवर्ती अनुक्रम (जो होगा यदि आप फिल्टर की तरह एक आलसी अनुक्रम फ़ंक्शन का उपयोग किया बनाने टाल)
आप पहले से ही एक एहसास हुआ अनुक्रम है, तो निम्न भी एक अच्छा विकल्प है, के रूप में यह पाश में आदिम अंकगणित से लाभ होगा:
(defn count-truthy [coll]
(loop [s (seq coll) cnt 0]
(if s
(recur (next s) (if (first s) (inc cnt) cnt))
cnt)))
नहीं एक डुप्लिकेट - गिनती मूल्य बनाम उन्हें वापस करना एक अलग ऑपरेशन है (और इसमें कुछ अलग-अलग समाधान हैं) – mikera