我必須學習Scheme的基礎來完成一個項目,但是我在構造while循環的等價物時遇到了一些困難。例如,在下面的代碼中,我想讓用戶輸入一個字符。如果字符是x,我想跳出循環。如果是任何其他字符,則會顯示該字符,循環將繼續進行下一次迭代。「While」循環在Scheme中跳過迭代
(define getUserChar (lambda()
(define ch)
(let loop()
(display "Enter character: ")
(set! ch (read-char))
(if (not (char=? ch #\x))
(begin
(display choice)
(loop)
)))))
這在技術上是可行的,但它會跳過迭代。例如:
Enter character: a
Enter character:
Enter character: s
我在第二次迭代期間無法輸入字符。我似乎無法找出問題所在。任何幫助非常感謝。
在閱讀輸入時,我總是忘記那個細節。非常感謝您的幫助。 – Rob
@Robbeh我的榮幸!我用更習慣的解決方案更新了我的答案;) –