2012-03-01 12 views
5

निम्नलिखित कोड स्निपेट में :|temp files| का अर्थ क्या है?क्या है "| ... |" पक्ष में?

(defmethod acceptor-remove-session ((acceptor my-site-acceptor) (session t)) 
    (declare (ignore acceptor)) 
    (loop for path in (session-value :|temp files|) 
    do 
     (ignore-errors (delete-file path)))) 

उत्तर

9

कॉमन लिस्प में, |...| प्रतीक नाम में पात्रों उद्धृत करने के लिए इस्तेमाल किया जा सकता है; यह सामान्य रूप से रिक्त स्थान जैसे वर्णों से बच सकता है, और यह केस रूपांतरण अक्षम भी करता है।

  • foo या :foo रिक्त स्ट्रिंग, जो अन्यथा असंभव है निर्माण करने के लिए symbol-name की "FOO"
  • |temp files| या :|temp files|"temp files"
  • || की symbol-name है "", के नाम पर है है

(यहां कोलन में कीवर्ड प्रतीक का सामान्य अर्थ है (में एक प्रतीकपैकेज) और बार से स्वतंत्र है।)

|...| उपयोगी है जब कोई कार्य प्रतीकों के उपयोग के लिए खुद को उधार देता है, लेकिन आम लिस्प सम्मेलनों के अनुसार नामित नहीं होते हैं। मैं इस मामले में कल्पना करूंगा कि पाठ "temp फ़ाइलें" प्रोग्राम के आउटपुट में कहीं भी होती है, या फ़ाइल नाम के लिए प्रयोग की जाती है, या कुछ अन्य मामले जहां TEMP-FILES देखकर परेशान होगा।

3

आम लिस्प प्रतीक नामों को ? और % जैसे वर्णों की एक विस्तृत श्रृंखला रखने की अनुमति देता है, जो कि अधिकांश भाषाएं उनके पहचानकर्ताओं में अनुमति नहीं देती हैं। फिर भी, कभी-कभी प्रोग्रामर ओपी के उदाहरण में |temp files| में एकल स्थान जैसे सामान्य रूप से अनुमति देने के अलावा प्रतीक नाम चाहता है। दो पाइप (|) पात्रों को इस तरह के प्रतीक के नाम को सीमित करने की आवश्यकता है। इसके अलावा, ऐसे पाइप-सीमित प्रतीक नाम केस संवेदनशील होते हैं, अवांछित प्रतीक नामों के विपरीत।

? 'aaBBcc|DDeeFFgg|hhII|jjKK|LL 

-> |AABBCCDDeeFFggHHIIjjKKLL| 

लंबवत बार पूरे प्रतीक नाम के चारों ओर की जरूरत नहीं है:

4

| कॉमन लिस्प प्रतीकों में एक बहु एस्केप वर्ण है। यह प्रतीक के कुछ हिस्सों से भी बच सकता है।

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