下面的方法似乎不起作用,但我不太确定原因。move-board所做的只是接受一个二维数组并返回一个二维数组,其余的代码都在那里。基本上,我正在尝试完成类似以下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))))))发布于 2017-08-15 12:45:52
我们需要看看你的其他函数在做什么。我将它们编成最小的可能性,并重新压缩以使if分支更清晰。你的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。
https://stackoverflow.com/questions/45685927
复制相似问题