read-line
和read-char
都需要您在輸入內容後按Enter鍵。 Common Lisp中是否有任何機制允許程序在立即按下任何單個字符時繼續運行,而不需要按Enter鍵的額外步驟?讀取字符時無需按下Enter按鈕
我正在嘗試爲程序構建一個快速,動態的文本輸入界面,以便用戶可以快速瀏覽並按與屏幕菜單對應的數字或字母執行不同的操作。所有額外按Enter鍵嚴重中斷工作流程。這也類似於提示中的「y/n」型詢問,只需按「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