Я пишу текстовую игру в Clojure. Я хочу, чтобы игрок печатал строки на консоли, а игра отвечала построчно.
Исследования показали, что (read-line)
- это способ получения строк текста из стандартного ввода в Clojure, но он не работает для меня.
Я нахожусь в новом проекте Leiningen, и я добавил предложение :main
в project.clj
, указывающее на единственный исходный файл:
(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"))
с использованием lein run
выход:
Entering -main
ECHO: nil
Exiting -main
Другими словами, нет возможности вводить текст на консоли для (read-line)
для чтения.
Как заставить Clojure ждать ввода символов и новой строки и возвращать соответствующую строку?
(Я использую GNOME Terminal 2.32.1 в Linux Mint 11, Leiningen 1.6.1.1 в Java 1.6.0_26 64-разрядная серверная виртуальная машина Java HotSpot (TM), Clojure версия 1.2.1.)
Обновление: если я запускаю lein repl
, я могу (println (read-line))
, но не тогда, когда у меня есть функция -main
и я запускаю с использованием lein run
.