सशर्त उत्पादन
जीएनयू कॉमन लिस्प
~v^
उतार-बाहर के निर्देश ~^
सबसे अधिक आपरेशन स्वरूपण पिछले सूची आइटम के बाद समाप्त करने के लिए एक सूची में प्रयोग किया जाता है। हालांकि, इसका v
उपयोग एक तर्क का उपभोग करने के लिए एक संशोधक के साथ भी किया जा सकता है, जिस स्थिति में यह समाप्त हो जाता है यदि वह तर्क शून्य है। यह विशेष रूप से उत्पादित शून्य से निपटने के लिए उपयोगी है dotimes
।
(loop as n from 1 to 10 do(format t"~d~%"n))
(dotimes(n 11)(if(> n 0)(format t"~d~%"n)))
(dotimes(n 11)(format t"~v^~d~%"n n))
format(condition)
पहला तर्क को format
से एक हो सकता t
, nil
उर्फ ()
, या एक धारा। यदि पारित t
हो जाता है stdout
, तो nil
यह आउटपुट के लिए होगा , अगर यह एक स्ट्रिंग के रूप में स्वरूपित आउटपुट लौटाएगा। यह सशर्त रूप से आउटपुट का उपयोग किया जा सकता है। उपरोक्त उदाहरण उतना ही छोटा लिखा जा सकता है:
(dotimes(n 11)(format(> n 0)"~d~%"n))
यदि कोई मूल्य आउटपुट था, तो रिटर्न वैल्यू होगी nil
। इस वजह से, यह एक do
लूप के लिए समाप्ति की स्थिति के रूप में भी इस्तेमाल किया जा सकता है :
(do((n 11))((<(decf n)1))(format t"~d~%"n))
(do((n 11))((format(>(decf n)0)"~d~%"n)))
~[...~]
सशर्त फॉर्मेटर तर्क का उपभोग करता है, और सूची द्वारा एक प्रारूपण स्ट्रिंग का चयन करता है। एक सामान्य उपयोग मामला ~:;
शून्य के बीच चयन करने के लिए डिफ़ॉल्ट फ़ॉर्मैटर के साथ है न कि शून्य के बीच।
(dotimes(n 11)(format t"~v^~[~r~:;~d~]~%"n(mod n 3)n))
सशर्त फॉर्मेटर्स को भी नेस्टेड किया जा सकता है, इस स्थिति में प्रत्येक बदले में एक तर्क का उपभोग करेगा।
~&
ऊपर दिए गए प्रत्येक उदाहरण में, ~%
एक नई रेखा का उत्सर्जन करने के लिए उपयोग किया जाता है। ज्यादातर मामलों में, यह एक शाब्दिक न्यूलाइन द्वारा प्रतिस्थापित किया जा सकता है। एक अन्य विकल्प का उपयोग करना है ~&
, जो एक नई पंक्ति का उत्सर्जन करेगा यदि और केवल अगर आउटपुट कर्सर एक लाइन की शुरुआत में नहीं है, तो उर्फ ए fresh-line
।
दोनों ~%
और ~&
यह भी एक साथ, एक तर्क ले जा सकते हैं v
संशोधक या एक निरंतर के रूप में, और कई नई-पंक्तियों के रूप में उत्पादन करेगा। वे दोनों भी खुशी से एक नकारात्मक तर्क को स्वीकार करेंगे, जिस स्थिति में वे कुछ भी नहीं उत्सर्जित करते हैं।
बाहरी संदर्भ
प्रैक्टिकल कॉमन लिस्प
18. कुछ कम व्यंजनों
आम लिस्प भाषा, दूसरा संस्करण
22.3.3। चरित्र धाराओं के लिए स्वरूपित आउटपुट