【发布时间】:2016-03-17 00:50:57
【问题描述】:
我是 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 应该有一个?
【问题讨论】:
-
什么是
get-room-description? -
这是另一个基于键从地图中获取元素的函数。类似于(获取键映射),但我不需要将映射作为参数传递。