【发布时间】:2012-07-25 20:56:57
【问题描述】:
我编写了一个函数,试图以交互方式从用户那里得到一个是/否(是/否)的答案。它测试答案是否有效,如果不是,则再次请求用户:
(defn get-valid-answer [question]
(println question)
(loop []
(let [ans (.trim (read-line))]
(if (#{"y" "n"} ans)
ans
(do (println "Please answer \"y\"[yes] or \"n\"[no] only!")
(recur) )))))
上面带有循环递归的版本可以完成这项工作,但我觉得必须有更好(更实用)的方法来做到这一点。我宁愿只进行一次 read-line 调用。任何人都可以建议在这种情况下不使用循环递归但可能使用某些(Clojure 内置)宏的替代版本吗?
【问题讨论】:
标签: clojure