例如,我有以下代码,我定义了一个变量v1
,然后检查v1
的值。如果v1 == 1
,我想(print-list q2)
并阅读其他输入并存储到v2
,如下所示:(define v2 (read))
。
(define v1 (read))
(cond
[(null? v1) (printf "No input..\n")]
[(= v1 1) (print-list q2)]
如何实现上述解决方案?
答案 0 :(得分:1)
您可以在cond
条件后编写多个表达式:
(define v1 (read))
(cond
[(null? v1) (printf "No input..\n")]
[(= v1 1)
(define v2 (read))
(print-list q2)]
[else (error "Unexpected value")])
当然,只有先前定义了print-list
和q2
,上述内容才有效,但它说明了您想要做的一般想法。请记住,尽管条件之后的所有表达式都将按顺序执行,但只会返回最后一个表达式的值,在此示例中为(print-list q2)
。
答案 1 :(得分:0)
还可以使用递归重复读取:
(define (f)
(let loop ((v (read)))
(cond [(= 0 v) "End."]
[(= 1 v) (println '(a b c))]
; [.. other options ..]
[else
(println '(1 2 3))
(loop (read))])))
测试:
(f)
1
'(a b c)
0
"End."
>