我正在用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