1

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 が表示されるのはなぜですか?

4

3 に答える 3

2

(dorun)また、マップは遅延シーケンスを生成し、dorun実際に印刷を強制するため、これは REPL で使用する必要があるコードで機能することに注意してください。

(dorun (map print [1 2 3])) ;=> 123
于 2015-07-16T21:48:45.553 に答える
0

出力ストリームのバッファリングの結果とほとんど同じように見えます。

flushfunctionを呼び出すことで、出力ストリーム バッファ内のすべてのデータを強制的に出力できます。

(defn print! [& args]
  (apply print args)
  (flush))

(map print! [1 2 3])
; => 123(nil nil nil)
于 2015-07-16T02:20:40.110 に答える