Clojure に手を出している間に、ユーザーが入力した内容をエコーする非常に基本的なプログラムを作成しました。しかし、それは私が自然だと認識している方法では実行されません。コードは次のとおりです。
(defn goo []
(print "echo> ")
(def resp (read-line))
(print resp)
)
コードが次のように実行されることを期待します(へfoo
の入力として入力する場合read-line
):
user=> (goo)
echo> foo
foonil
ただし、代わりに、エコーと読み取り行が切り替えられます。
user=> (goo)
foo
echo> foonil
なぜこれが起こるのですか?私が見逃している機微はありますか?
編集:ジョーの答えから、更新された正しい解決策は次のとおりです。
(defn goo []
(print "echo> ")
(flush)
(def resp (read-line))
(print resp)
(flush)
)
println
また、代わりにを使用する場合、フラッシュは必要ありませんprint
。