我正在用Clojure编写一个文本游戏。我希望玩家在控制台上输入行数,然后让游戏逐行响应。Clojure(读线)不等待输入
研究显示我(read-line)
是一种方式来从Clojure的标准输入中获取文本行,但它不适合我。
我是在一个新的Leiningen项目,我添加了一个:main
条款的project.clj
指向只有源文件:使用lein run
产量
(ns textgame.core)
(defn -main [& args]
(println "Entering -main")
; (flush) ;makes no difference if flush are commented out
(let [input (read-line)]
(println "ECHO:" input))
; (flush)
(println "Exiting -main"))
:
Entering -main
ECHO: nil
Exiting -main
换句话说,没有机会在控制台输入文字(read-line)
来阅读。
我应该如何让Clojure等待字符和换行符被输入并返回相应的字符串?
(我在Linux Mint的11使用GNOME终端2.32.1,Leiningen 1.6.1.1关于Java 1.6.0_26 Java的热点(TM)64位服务器VM,Clojure的版本1.2.1。)
更新:如果我运行lein repl
,我可以(println (read-line))
,但不是当我有-main
函数并使用lein run
运行时。
[Clojure(read-line)的可能重复返回nil;不提示](http:// stackoverflow。com/questions/5861373/clojures-read-line-returns-nil-does-not-prompt) – amalloy
@amalloy你连接的答案中的最佳猜测是它是swank-clojure/SLIME的问题。我没有使用这两种。 – dukereg
您是否尝试直接使用java -cp clojure.jar clojure.main /path/to/myscript.clj运行脚本以放弃其他问题并关注lein运行问题? – jneira