क्या यह निर्धारित करने का एक बेवकूफ तरीका है कि LazySeq में कोई तत्व है या नहीं? Clojure 1.5 के रूप में बुला contains?
एक IllegalArgumentException फेंकता है:क्लोजर: कॉल करने के लिए बेवकूफ तरीका शामिल है? आलसी अनुक्रम पर
IllegalArgumentException contains? not supported on type: clojure.lang.LazySeq
clojure.lang.RT.contains (RT.java:724)
1,5 से पहले, जहाँ तक मुझे पता है, यह हमेशा झूठे लौट आए।
मुझे पता है कि LazySeq पर contains?
पर कॉल करना कभी वापस नहीं हो सकता है क्योंकि यह अनंत हो सकता है। लेकिन अगर मुझे पता है कि यह नहीं है और परवाह नहीं है तो इसका उत्सुकता से मूल्यांकन किया जाता है?
क्या मैं के साथ आया है:
(defn lazy-contains? [col key]
(not (empty? (filter #(= key %) col))))
लेकिन यह बहुत सही नहीं लगता है। क्या कोई बेहतर तरीका है?
एक कुंजी के रूप में शून्य होने का मामला कुछ हद तक गलत बनाता है। लेकिन चूंकि मेरे मामले में कुंजी कभी भी शून्य नहीं है, मैं इसके साथ रह सकता हूं। – nansen
दाएं। इसे ठीक करने के लिए, बस अपनी मूल भविष्यवाणी का उपयोग करें: (कुछ # (= key%) col) – Chouser
@Chouser मैं इन विकल्पों में से किसी एक को किसी विशेष उपयोग के लिए लागू करने का प्रयास कर रहा हूं और निम्न समस्या में चल रहा हूं। मैं इसे मूल रूप से अधिक मिलान करने के लिए कैसे प्राप्त करूं? कार्यक्षमता? (आलसी-युक्त? {: राज्य "सक्रिय",: course_n "कानून",: course_i "सी 0"}: राज्य) शून्य देता है लेकिन उपयोग करते समय? यह सच है मैं clojuredocs के माध्यम से भी ग्रोक करने की कोशिश कर रहा हूं और इसे ठीक करने के तरीके को नहीं देख रहा हूं। – RatavaWen