मेरे पास क्लोजर में संख्यात्मक कार्यों का एक समूह है जो मैं तर्कों को मान्य करना चाहता हूं। कार्यों द्वारा अपेक्षित कई प्रकार के तर्क हैं, जैसे कि सकारात्मक पूर्णांक, प्रतिशत, संख्याओं के अनुक्रम, गैर-शून्य संख्याओं के अनुक्रम, और इसी तरह। मैं किसी भी व्यक्तिगत फ़ंक्शन के लिए तर्कों को मान्य कर सकता हूं:क्या क्लोजर में तर्कों को सत्यापित करने के लिए मुझे फ़ंक्शन या मैक्रो का उपयोग करना चाहिए?
- फ़ंक्शन सत्यापन कोड फ़ंक्शन में लिख रहा है।
- एक सामान्य उद्देश्य समारोह लिखना, इसे तर्क और अपेक्षित प्रकारों को पारित करना।
- एक सामान्य उद्देश्य मैक्रो लिखना, इसे तर्क और अपेक्षित प्रकारों को पारित करना।
- अन्य मैंने सोचा नहीं है।
लैरी हंटर द्वारा कुछ Lisp code # 3 का एक अच्छा उदाहरण है। (test-variables
मैक्रो की तलाश करें।)
मेरा अंतर्ज्ञान यह है कि मूल्यांकन पर नियंत्रण और संकलन-समय गणना करने की क्षमता के चलते मैक्रो अधिक उचित है क्योंकि इसे रन टाइम पर करने के बजाय। लेकिन, मैं जिस कोड को लिख रहा हूं उसके लिए मैंने उपयोग के मामले में भाग नहीं लिया है, जिसके लिए इसकी आवश्यकता होती है। मैं सोच रहा हूं कि ऐसा मैक्रो लिखने के प्रयास के लायक है या नहीं।
कोई सुझाव?
नाइस; पता नहीं था कि – pmf
एक और महान जवाब के लिए धन्यवाद। यह वही करता है जो मैं करना चाहता था। यह एक कारण बताता है कि मैक्रो एक बेहतर समाधान है। समस्या तर्क को असंबद्ध करने के तरीके के बारे में सोचते हुए यदि किसी फ़ंक्शन को दो विशेषताओं के साथ दो या अधिक की आवश्यकता होती है, तो दो सकारात्मक पूर्णांक कहें, मैक्रो मार्ग आपको त्रुटि संदेश में समस्या तर्क का नाम देता है, केवल मूल्य नहीं। मुझे नहीं लगता कि आप इसे एक समारोह के साथ कर सकते हैं। – clartaq
पूर्व शर्त और पोस्टकंडिशन यहां दस्तावेज किए गए हैं http://clojure.org/special_forms हालत मानचित्र के लिए खोजें। – Chouser