Ruby でいう StringIO みたいなもの。標準入力 *in*
と標準出力 *out*
をスタブしてくれる感じの便利関数。
どちらも標準入出力を扱う処理のテストに便利そう。あと暗黙に標準出力に書く関数を with-out-str
でラップして出力をインターセプトし文字列として何か他のことに利用する、などのテクニックも使いたくなることがありそう。
ドキュメント
コードスニペット
- https://github.com/kyanny/playground/blob/gh-pages/clj-with-in-str/src/clj_with_in_str/core.clj
- https://github.com/kyanny/playground/blob/gh-pages/clj-with-out-str/src/clj_with_out_str/core.clj
(ns clj-with-in-str.core)
(read-line)
(with-in-str "Hello world"
(read-line))
(with-in-str "Hello world"
(slurp *in*))
(ns clj-with-out-str.core)
(println "Hello world")
(with-out-str
(println "Hello world"))