শর্তাধীন আউটপুট
জিএনইউ কমন লিস্প
~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। অক্ষর স্ট্রিমগুলিতে ফর্ম্যাট করা আউটপুট