我正在尝试建立菜单,以便程序可以根据用户输入进行更改。这似乎有效,但我想看看它是否是" RIGHT"这样做的方式。此外,当我输入一个数字后程序运行时,我得到一个(无效)显示。我怎样才能使(虚空)消失。任何帮助将不胜感激....谢谢。
(printf "Choose your difficulty\n")
(printf "1. Easy\n")
(printf "2. Medium\n")
(printf "3. Hard\n")
(printf "4. Insane\n")
(define choice (read))
(define (choose c)
(cond [(= c 1)(set! amount 3)]
[(= c 2)(set! amount 7)]
[(= c 3)(set! amount 10)]
[(= c 4)(set! amount 99)]
[else (printf "Invalid choice.\n")]))
(choose choice)
答案 0 :(得分:1)
通常,您应该避免使用set!
。实现它的功能方式可能如下所示:
(define (choose c)
(cond [(= c 1) 3]
[(= c 2) 7]
[(= c 3) 10]
[(= c 4) 99]
[else (printf "Invalid choice.\n") (choose (read))]))
(define amount (choose (read)))
由于(choose (read))
子句中的else
,程序会询问,直到获得有效输入,这通常是您想要的。如果不是,您将想要找出amount
合理的值(例如合适的默认值)。