如何在Clojure中从终端(而不是Swing)读取一次击键?
我尝试了一些事情,包括JLine库的various versions,但还没有让它工作(参见下面的示例)。
我很乐意接受一个有效的,仅限Unix的(Mac,Linux,...)示例。理想情况下,我想知道如何为stdin和stdout切换缓冲。
这里有一些结果:
;; project.clj dependencies:
;; [[org.clojure/clojure "1.4.0"]
;; [jline/jline "2.8"]])
(ns slosh.core
(:import [jline.console ConsoleReader])
(:gen-class))
(defn -main []
(println "start")
(let [cr (ConsoleReader.)]
(.readCharacter cr)
(println "done")))
这会打印“开始”但不响应除control-C之外的任何输入。
答案 0 :(得分:5)
我不确定你是如何运行它的,但是如果你使用lein run
,你会遇到问题。尝试使用lein trampoline run
。
我会链接Single character console input in java/clojure,但我似乎没有足够的互联网点数。
答案 1 :(得分:1)
也许还要看看clojure-lanterna。