Come si legge un singolo tasto dal terminale (non Swing) in Clojure?Lettura ingresso tastiera senza buffer in Clojure
Ho provato alcune cose tra cui variousversions della libreria JLine, ma non l'ho ottenuto funzionante (vedi esempio sotto).
Accetterò volentieri un esempio di lavoro, Unix-only (Mac, Linux, ...). Idealmente mi piacerebbe sapere come spegnere il buffering sia per stdin che per stdout.
Ecco qualcosa di simile:
;; 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")))
Questa stampe "inizio", ma non risponde ad alcun input, tranne control-C.
'lein trampoline run' funziona davvero, così come l'esecuzione da überjar. Qualche idea per cui uno lavora e non l'altro? – JohnJ
La funzione 'sh' usata con' lein run' si aggancia solo 'out' e' err' del progetto viene eseguito come sottoprocesso (consultare https://github.com/technomancy/leiningen/blob/master/leiningen-core /src/leiningen/core/eval.clj#L155). 'trampoline' fa in modo che il progetto venga eseguito come un processo indipendente con i suoi' in', 'out' e' err' collegati dalla shell. – johnwayner
Fantastico, grazie! – JohnJ