これは、 Leiningenプロジェクトint
として構造化された、登録されたキー押下に対応するを印刷するJLineを使用した「即時エコー」アプリです。
project.clj
:
(defproject con "1.0.0-SNAPSHOT"
:description "FIXME: write"
:main con.core
:dependencies [[org.clojure/clojure "1.1.0"]
[org.clojure/clojure-contrib "1.1.0"]
[jline "0.9.94"]])
src/con/core.clj
:
(ns con.core
(:import jline.Terminal)
(:gen-class))
(defn -main [& args]
(let [term (Terminal/getTerminal)]
(while true
(println (.readCharacter term System/in)))))
問題の機能はクラスによって提供されます。このクラスは、端末との対話に使用できるプラットフォーム固有のサブクラスのインスタンスを返すjline.Terminal
静的メソッドを提供します。getTerminal
詳細については、Javadocを参照してください。
どのように見えるか見てみましょうasdf
...
$ java -jar con-1.0.0-SNAPSHOT-standalone.jar
97
115
100
102
(C-cもちろん、それでもアプリを強制終了します。)