Форматирование ввода ввода в Clojure - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь создать простой цикл ввода в Clojure.Идея состоит в том, чтобы прочитать строку текста следующим образом:

> look
You see nothing, as this game hasn't actually been written.

Метод, который я использую, чтобы попытаться это сделать, приведен ниже:

(defn get-input []
  (print "> ")
  (string/trim-newline (read-line)))

Однако вместо этого выглядит цикл вводакак это:

look
> You see nothing, as this game hasn't actually been written.

Как можно получить кавычку угла для печати до ввода пользователя, а не после него?

1 Ответ

0 голосов
/ 15 октября 2018

Это проблема буферизации."> " - это небольшой объем текста, который не содержит новой строки (и он не добавляется автоматически, поскольку вы не используете println), поэтому он застревает в буфере вывода.Вам просто нужно сделать flush после print ing.

Когда мне нужно комбо print / flush, подобное этому, в нескольких местах, я обычно создаю небольшую вспомогательную функцию, чтобы убрать вещи:

(defn print-fl [& messages]
  (apply print messages) ; Pass the strings to print to be printed
  (flush)) ; Then flush the buffer manually so small strings don't get stuck

(defn get-input []
  (print-fl "> ")
  (string/trim-newline (read-line)))

(get-input)
> look
"look"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...