निम्नलिखित में जब मैक्रो:इस मैक्रो परिभाषा में @ साइन की आवश्यकता क्यों है?
(defmacro when (condition &rest body)
`(if ,condition (progn ,@body)))
क्यों संकेत पर वहाँ एक है?
निम्नलिखित में जब मैक्रो:इस मैक्रो परिभाषा में @ साइन की आवश्यकता क्यों है?
(defmacro when (condition &rest body)
`(if ,condition (progn ,@body)))
क्यों संकेत पर वहाँ एक है?
यह थोड़ा प्रयोग
> (let ((x '(1 2 3 4))) `(this is an example ,x of expansion))
(THIS IS AN EXAMPLE (1 2 3 4) OF EXPANSION)
> (let ((x '(1 2 3 4))) `(this is an example ,@x of expansion))
(THIS IS AN EXAMPLE 1 2 3 4 OF EXPANSION)
बनाकर अंतर को देखने के लिए आप @
के उपयोग के विस्तार में सीधे अंदर सूची के तत्वों स्थापित करेंगे देख सकते हैं बहुत आसान है। इसके बजाय आप विस्तार में रखा सूची के बिना मिलता है।
@
को सूची को डीकोनस्ट्रक्चर करने और इसे सूची में जोड़ने के बारे में भी विचार किया जा सकता है जैसा कि Practical Common Lisp में वर्णित है।
(append (list 'a) (list 1 2) (list 'c))
जो पैदा करता है:
(a 1 2 c)
`(a ,@(list 1 2) c)
के बराबर है