RACKET菜单选择

时间:2014-11-10 20:29:58

标签: variables input racket

我正在尝试建立菜单,以便程序可以根据用户输入进行更改。这似乎有效,但我想看看它是否是" 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)

1 个答案:

答案 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合理的值(例如合适的默认值)。