首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Clojure没有按照我想要的方式工作

Clojure没有按照我想要的方式工作
EN

Stack Overflow用户
提问于 2020-11-12 09:16:36
回答 1查看 98关注 0票数 1

我做了一个函数来回答这样的问题。

代码语言:javascript
运行
复制
(defn ask-ques [ques pred]
  (print ques)
  (let [user-input (read-line)]
    (if #(pred user-input) user-input (recur ques pred))))

我把main写成这样。

代码语言:javascript
运行
复制
(defn -main []
  (loop []
      (let [user-input (ask-ques "CHOOSE ONE. (C)ontinue OR (E)xit : " #(contains? #{"C" "E"} %))]
        (when (= user-input "C") (apply body (rand-nth (seq voc-map))) (recur)))))

但是,Clojure首先收到输入并输出"CHOOSE ONE。(C)ontinue OR (E)xit:“out,而pred不能很好地工作。

有什么问题吗?为什么它是这样工作的?我该怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2020-11-12 10:04:17

#(pred user-input)是一个零参数的函数,因为它有一个非nil的值,所以if会把它当作真,所以你总是会得到user-input,它永远不会recur。我怀疑你想要的是(pred user-input)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64796526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档