我提示用户将2个值存储在2个不同的变量中,如下所示:
(define (promptUser)
(define varA 'a)
(define varB 0)
(display "Value or hit q/Q to terminate: ")
(set! varA (read-line))
(cond
((or (string=? varA "q") (string=? varA "Q")))
(else
(display "Value for b: ")
(set! varB (read))
(promptUser)
)
)
)
正如您所看到的,当我第一次呼叫(promptUser)
时,它实际上会在(read-line)
停止等待用户输入,但由于某种原因,(promptUser)
处的呼叫实际上会跳过对于第一个用户输入并直接跳转到else
cond
案例
它不会因varA的输入而停止。
有人可以向我解释一下吗?
答案 0 :(得分:1)
有一些问题:
(set! varB (read))
当在drracket中进行测试时,'read'会获得所有内容,直到分隔符,即空格或新行。我猜可以在下一个循环中使用新行char:
(set! varA (read-line))
当您在B中输入例如:'aaa bbb'并且在下一个循环中显示varA的内容时,可以看到这一点。 bbb会在那里。 如果用读线替换读数,
(set! varB (read-line))
一切都按预期工作。