2012-09-25 20 views
22

क्या आप फ़ंक्शन पैरामीटर को नष्ट कर सकते हैं लेकिन अभी भी मूल उपयोग के लिए उपलब्ध है? जिस तरह से मैं इसे कर रहा हूं अब फ़ंक्शन बॉडी के अंदर let फ़ॉर्म का उपयोग कर रहा है, लेकिन मुझे आश्चर्य है कि ऐसा करने का एक छोटा तरीका है या नहीं।क्लोजर फ़ंक्शन का पैरामीटर पैरामीटर।

उत्तर

25

भी कार्यों के लिए :as की तरह काम करता है लगता है:

साथ vector

(defn test [[x y :as v]] 
    {:x x :y y :v v}) 

(test [1 2 3 4]) 
=> {:x 1 :y 2 :v [1 2 3 4]} 
hash-map

(defn test2 [{x :x y :y :as m}] 
    {:x x :y y :m m}) 

(test2 {:x 1 :y 2 :z 3}) 
=> {:x 1 :y 2 :m {:x 1 :y 2 :z 3}} 

साथ

इस भयानक ब्लॉग पोस्ट देखें: http://blog.jayfields.com/2010/07/clojure-destructuring.html

+3

मेरा मानना ​​है कि चलो, fn, defn, आदि सभी एस का उपयोग करें एएम विनाशकारी वाक्यविन्यास। – JohnJ

+0

@ जोहानजे: हां, विनाशकारी अर्थशास्त्र को लगातार बनाने के लिए। – Ankur

+0

@ जोहानजे यह "सच" है। मैं पहले ब्लॉग पोस्ट पर बहुत उलझन में था क्योंकि यह केवल उदाहरणों के रूप में उपयोग करता है। चलो और एफएन/डीएनएन के बीच का अंतर यह है कि यह एक बाध्यकारी रूप का उपयोग करता है। –

संबंधित मुद्दे