(do
(print "Enter name: ")
(let [name (read-line)]
(println "Hello " name)))
В результате появляется запрос на ввод моего имени, затем операторы print
и println
выполняются следующим образом:
Enter name: Hello stuart
=> nil
Я пытался (flush)
(do
(print "Enter name: ")
(flush)
(let [name (read-line)]
(println "Hello " name)))
Но случается то же самое, это всегда делает (чтение строки), прежде чем что-либо еще!
Я тоже пытался
(doall (
(print "Enter name: ")
(flush)
(let [name (read-line)]
(println "Hello " name))))
Но опять же, сначала запрашивается имя, прежде чем что-то еще, затем выдает исключение: (
Я что-то упускаю здесь очевидное?
: Примечание: он запускается через repl.
Если я попытаюсь просто создать приложение со следующим
(defn -main
"I don't do a whole lot ... yet."
[& args]
(do
(print "Enter your name: ")
(flush)
(let [s (read-line)]
(println "You entered " s))))
(-main)
и запустите его, не через repl он работает как положено, за исключением того, что все запускается дважды!
Enter your name: stuart
You entered stuart
Enter your name: stuart
You entered stuart
Process finished with exit code 0
Если я удаляю (flush)
, он работает не по порядку, но все равно делает это дважды!
(defn -main
"I don't do a whole lot ... yet."
[& args]
(print "Enter your name: ")
(let [s (read-line)]
(println "You entered " s)))
hfghfgh
Enter your name: You entered hfghfgh
fghfgh
Enter your name: You entered fghfgh
Process finished with exit code 0
Что происходит!
Это все с использованием lein