9

Clojure で端末 (Swing ではない) から 1 つのキーストロークを読み取るにはどうすればよいですか?

JLine ライブラリのさまざまな バージョンを含むいくつかのことを試しましたが、動作しませんでした (以下の例を参照)。

動作する Unix 専用 (Mac、Linux など) の例を喜んで受け入れます。理想的には、標準入力と標準出力の両方でバッファリングをオフにする方法を知りたいです。

ここに近いものがあります:

;; 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")))

これは "start" を出力しますが、control-C 以外の入力には応答しません。

4

2 に答える 2

6

これをどのように実行しているのかわかりませんが、 を使用している場合lein run、問題が発生します。を使ってみてくださいlein trampoline run

Java/clojure で単一文字のコンソール入力をリンク しますが、それを行うのに十分なインターネット ポイントがないようです。

于 2012-11-18T02:54:49.897 に答える
2

たぶんclojure-lanternaも見てください。

于 2012-11-18T19:17:08.293 に答える