nREPLで次の出力順序が異なるのはなぜだろうか
(map println [1 2 3])
Result:
1
2
3
(nil nil nil)
対
(map print [1 2 3])
Result:
(nil nil nil)123
print を適用すると戻り値が表示されてから 123 が表示されるのはなぜですか?
(dorun)
また、マップは遅延シーケンスを生成し、dorun
実際に印刷を強制するため、これは REPL で使用する必要があるコードで機能することに注意してください。
(dorun (map print [1 2 3])) ;=> 123
出力ストリームのバッファリングの結果とほとんど同じように見えます。
flush
functionを呼び出すことで、出力ストリーム バッファ内のすべてのデータを強制的に出力できます。
(defn print! [& args]
(apply print args)
(flush))
(map print! [1 2 3])
; => 123(nil nil nil)