我尝试了您的源代码,但省略了刷新。它没有问题。您使用的是哪个版本的 Clojure?我用 Clojure 1.3 尝试了以下代码。
(def command (atom 0))
(defn print-prompt []
(print "prompt> ")
)
(defn ask-for-input
[]
(print-prompt)
(let [x (str (read-line))]
(println (str "User input: " x))
(reset! command x)
))
编辑:我改变了我复制和测试的你的一个功能,它现在可以与独立和 lein 运行一起使用。您在原始示例中有 (flush)。
(defn print-prompt []
(print "prompt> ")
(flush)
)
据我所知, println 会导致冲洗,而 print 不会,并且您需要在打印后冲洗。
我正在添加此信息以防万一它可能有帮助。我有一个名为 repl-test 的 Clojure 项目。这是我的 repl-test 项目的 core.clj 文件头。您的来源,已经发布,在这个文件中还有一些其他的功能,与您的帖子无关。
(ns repl-test.core
(:gen-class)
(:use clojure.contrib.command-line)
(:require [clojure.contrib.string :as cstr])
(:require [clojure.contrib.trace :as ctr])
(:require [clojure.string :as sstr])
(:use clojure-csv.core))
这是 project.clj 文件:
(defproject repl-test "0.0.1-SNAPSHOT"
:description "TODO: add summary of your project"
:dependencies [[org.clojure/clojure "1.3.0"]
[org.clojure/clojure-contrib "1.2.0"]
[clojure-csv/clojure-csv "1.2.4"]
[org.clojure/tools.cli "0.1.0"]
[clj-http "0.1.3"]]
:aot [repl-test.core]
:main repl-test.core)