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