提问人:blekione 提问时间:3/17/2016 更新时间:3/17/2016 访问量:746
使用 recur 时传递给关键字的参数数错误
Wrong number of args passed to keyword when using recur
问:
我是 Clojure 的新手。这是我的代码:
(defn startgame [room-id]
(loop [rid room-id]
(println (clojure.string/join " "(get-room-description rid)))
(let [rid (keyword (read-line))]
(if (= rid :0)
"bye bye"
(recur (rid)))
)))
它编译良好,但是当它到达行时运行它时,它会抛出错误:recur(rid)
IllegalArgumentException Wrong number of args passed to keyword: :1 clojure.lang.Keyword.throwArity (Keyword.java:97)
我花了几个小时来寻找原因,但我找不到解决方案。我的循环有一个参数,所以应该有一个吗?rid
recur
答:
4赞
ayato_p
3/17/2016
#1
(defn startgame [room-id]
(loop [rid room-id]
(let [rid (keyword (read-line))]
(if (= rid :0)
"bye bye"
(recur rid)))))
不需要括号。rid
rid
是类型,所以我们不能将这个变量用作函数(在这种情况下/有时您可以使用关键字作为函数)。clojure.lang.Keyword
(:foo {:foo 10}) ;;=> 10
评论
get-room-description