最近知ったこととしたこと
イカで述べるClojureはversion 1.8.0 についてである。
Clojure について
Clojure の (case example ...)は (condp = example ...)と等価でない。 Enum の比較を行う際に case ではうまく動作しなかったが、condp であれば動いた。 理由がわからないままなので、Clojureメッチャデキル方はぜひとも教えて頂ければ幸いです。
JavaFX について
と書いたくせにまたClojureなんだけど、Clojureで javafx.scene.control.Label を使おうとして
(def label (Label. "Label"))
とかしたらコンパイルできずに怒られもしないし動かない。
Java 8 で Clojure を使う (2): JavaFX - tnoda-clojure
によると、これはLabelだけでなく、control に含まれるクラス全体らしい。 なのでこれを解決する場合する場合には
(def label (promise)) (defn init [] (deliver label (Label. "Label")))
のようにすると動いたがバットノウハウ感がある。
JavaFX について
今度はちゃんと JavaFX についてで、Scene には標準で setOnKeyPressed というキーボードが押された際に発火するhandlerを設定できるメソッドがあるが、 これは KeyCode を含まない。これは KeyEvent/KEY_PRESSED にもともと含まれていないことに起因する。 なので Scene 上で KeyCode が欲しかったら addEventFilter で KeyEvent/KEY_TYPED をとってやるハンドラを設定することで解決できる。 「JavaFXはク○」とか浅はかな知識で思ってごめんなさい。
PDF発表ツール
良いっぽいのがあった
GitHub - pdfpc/pdfpc: A presenter console with multi-monitor support for PDF files.
けど自分の環境では動かなかったため、ClojureでPDF発表のためのツール開発を初めた。
上のClojureでJavaFXを触っているのはこれを作るため。 現状はPDFの表示とページの移動まで実装できた。 もし気になったりすることがあったら使ってみて下さい。