मैंने एक फ़ंक्शन परिभाषित किया है जो नक्शा लेता है। मैंने मूल्यों तक पहुंचने के लिए विनाश का उपयोग करना सोचा। हालांकि, मैं यह भी जांचना चाहता हूं कि कोई भी उपयोग की जाने वाली चाबियाँ हैं या नहीं।क्लोजर में मानचित्रों को नष्ट करना - अप्रयुक्त कुंजी
तो, उदाहरण के कुछ तरह के लिए ...
(defun func1 [{:keys [a b c] :rest rest}]
(println a b c)
(println rest))
(func1 {:a 1 :b 2 :c 3 :d 4})
जो
1 2 3
4
कारण मैं चाहता हूँ कि यह करता है, तो बाकी रिक्त नहीं है, यह शायद एक त्रुटि है मुद्रित होता है, जो मैं सिग्नल करना चाहता हूं। मुझे पता है: जैसा कि मैं उपयोग कर सकता था। लेकिन फिर मुझे वैध कुंजी की सूची दो बार स्टोर करने की आवश्यकता है।
क्या मुझे कुछ याद आ रही है?
फिल
मेरा तर्क यह है कि यदि वे गलत कुंजी में गुजरते हैं, तो शायद यह एक गलती है। मैंने एक मानचित्र का उपयोग किया है क्योंकि यह एक समझदार पर्याप्त विकल्प लग रहा था। सुनिश्चित नहीं है कि एक बेहतर विकल्प क्या होगा। फ़ंक्शन को पैरामीटर के परिभाषित सेट के किसी भी संख्या (सहित कोई भी) लेने की आवश्यकता नहीं है। आप किस डेटा संरचना का सुझाव देंगे? –
बेशक उस परिदृश्य में एक नक्शा अभी भी सबसे अच्छा है, मुझे अभी भी यह नहीं पता कि आप खुद को सीमित क्यों करेंगे (या इसके बजाय: आपके उपयोगकर्ता!)। यह जरूरी नहीं है कि वे "गलत" कुंजी में गुजर रहे हैं, बल्कि उनके पास विशेषताओं का एक बड़ा नक्शा है जो आपके कार्य के लिए जरूरी नहीं हैं। – Cubic
आह, हाँ, यह सच है।मैं प्रभावी रूप से एक डीएसएल लागू कर रहा हूँ। इसलिए, इस मामले में, मूल्य कहीं और से उत्पन्न होने के बजाय उपयोगकर्ता द्वारा सीधे लिखे जाने की संभावना है। तो वे गुणों का एक बड़ा नक्शा होने की संभावना नहीं है। अगर उन्होंने किया, तो वे हमेशा मेरे प्रतिबंध के आसपास काम करने के लिए चुनिंदा कुंजी का उपयोग कर सकते थे। –