read-line
और read-char
दोनों की आवश्यकता होती है आप कुछ लिखने के बाद Enter कुंजी दबाएं। क्या आम लिस्प में कोई तंत्र है जो प्रोग्राम को एंटर दबाए जाने के अतिरिक्त चरण की आवश्यकता के बिना तत्काल किसी भी चरित्र के प्रेस पर जारी रखने की अनुमति देगा?दर्ज बटन की आवश्यकता के बिना एक चरित्र पढ़ना दबाया
मैं एक कार्यक्रम के लिए एक त्वरित, गतिशील पाठ इनपुट इंटरफेस के निर्माण के लिए तो उपयोगकर्ताओं को जल्दी से आसपास नेविगेट और नंबर या परदे पर मेनू के लिए इसी पत्र दबाकर अलग अलग बातें कर सकते हैं कोशिश कर रहा हूँ। एंटर कुंजी के सभी अतिरिक्त प्रेस वर्कफ़्लो को गंभीरता से बाधित करते हैं। यह एक प्रॉम्प्ट से पूछताछ के "वाई/एन" प्रकार के समान होगा, जहां बस "y" या "n" दबाकर पर्याप्त है।
मैं SBCL उपयोग कर रहा हूँ, कि अगर एक फर्क नहीं पड़ता। शायद यह कार्यान्वयन विशिष्ट है, मैं this page पर दोनों उदाहरण की कोशिश की और यह काम नहीं करता (मैं अभी भी Enter दबाने की आवश्यकता); यहां पहला है:
(defun y-or-n()
(clear-input *standard-input*)
(loop as dum = (format t "Y or N for yes or no: ")
as c = (read-char)
as q = (and (not (equal C#\n)) (not (equal C#\y)))
when q do (format t "~%Need Y or N~%")
unless q return (if (equal C#\y) 'yes 'no)))
उत्कृष्ट, बस जब मैंने सवाल देखा तो मैं क्या सोच रहा था। अब मुझे जवाब लिखना नहीं है। – Vatine