私は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)
私はそれを引き起こす原因を見つけるために最後の数時間を費やしました、しかし私は解決策を見つけることができません。私のループには1つの引数があるrid
のでrecur
、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
)。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加