以下似乎不起作用,但我不太清楚为什么。所有移动板都采用2D阵列并返回2D阵列,其余的代码都在那里。基本上我试图完成类似下面的python:
While True:
do stuff
if gameover:
print("Game Over!")
break
没有工作的Clojure(打印一次,请求输入,然后挂起)
(defn game-loop [board]
(loop [b board]
(if (game-over? b) "Game Over!"
(do (print-board b)
(recur (move-board (read-line) b))))))
答案 0 :(得分:2)
我们需要看看你的其他功能在做什么。一世
将它们最小化地制作成可能的东西,并重新制作
if-branch清除器。您的loop
也是不必要的。
(defn game-over? [b] false)
(defn print-board [b] (println b))
(defn move-board [ln b] (println "moving board:" ln))
(defn game-loop [b]
(if (game-over? b)
"Game Over!"
(do (print-board b)
(recur (move-board (read-line) b)))))
(game-loop :bored)
使用前三个函数,您的循环按预期运行: 无限地提示单行。好吧,至少第一个 时间,然后你的“挂起”问题再现。
这很可能是由this issue with the JVM引起的。还discussed here。