2
我正在嘗試使用DrRacket
的REPL來測試用戶是否輸入了y
字符。DrRacket REPL不放棄EOF
爲此,我用這樣的代碼:
(eq? (read-char) #\y)
當我運行這段代碼,DrRacket
顯示輸入文本框與EOF按鈕,我想我應該當點擊我完成了我的輸入。
所以我的輸入,然後是ŸEOF返回true,但後來當我運行的代碼,第二次行了,我不明白的文本框;相反,它立即返回false。我猜這是因爲它沒有丟棄緩衝區中的eof,所以它將它與y
進行比較。
我該如何告訴REPL不要在緩衝區中包含eof?
可以使用匹配「y」和「yes」的正則表達式來代替「y」作爲匹配模式。 – soegaard
謝謝你澄清EOF按鈕;但是,使用Enter時我會得到相同的行爲:換行符保存在緩衝區中,並在下一次調用read-char時使用。 –
在上面的解決方案中,我使用'read-line'來讀取字符和換行符。如果你想使用'read-char',那麼你需要讀取字符和下面的換行符(即使用兩次調用'read-char'而不是一次)。爲了更好的建議發佈實際的代碼。 – soegaard