2010-12-31 12 views
42

मैं कुछ क्लोजर मैक्रोज़ को समझने की कोशिश कर दीवार के खिलाफ अपने सिर को टक्कर दे रहा हूं जो अनजान-विभाजन का उपयोग करता है, और मुझे लगता है कि उन्हें जिस तरह की आवश्यकता है, उसे स्पष्ट रूप से विस्तारित नहीं कर रहा है। क्या कोई मुझे डमी शब्दों में समझा सकता है?क्या कोई सरल शर्तों में क्लोजर के अनजान-विभाजन को समझा सकता है?

उत्तर

50

मैं क्लोजर पर कोई विशेषज्ञ नहीं हूं, लेकिन चूंकि यह मूल रूप से एक लिस्प है, चीजें ऐसी अनोखी-विभाजन की तरह होनी चाहिए जो सूची का उपयोग उस स्थिति में विलीन हो जाती है जहां इसका उपयोग किया जाता है। अंतर इस तरह दिखता है:

`(1 2 ~(list 3 4)) => (1 2 (3 4)) 
`(1 2 [email protected](list 3 4)) => (1 2 3 4) 

` == syntax-quote 
~ == unquote 
[email protected] == unquote-splice 
+2

आह, तो अनजान-विभाजन सिर्फ एक सूची को फ़्लैट करता है? – Zubair

+4

@ जुबैर: हाँ। यह भी ध्यान दें कि ',' ('अल्पविराम) के बजाय CLojure '~' (tilde) का उपयोग किया जाता है। – ffriend

+1

@ffriend: \ '(क्लोजर में किए गए परिवर्तनों के बारे में (एनएच (यादृच्छिक 2) '(कई कुछ)) पसंद करते हैं, मैं पारंपरिक', '(कॉमा' पर उनके ~' '(tilde) का उपयोग करके आश्चर्यचकित हूं।) - कोई विचार क्यों बदला गया था?) –

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