¿Por qué la cadena impresa usando 'print' en clojure solo aparece en mi consola después de usar println?
Tengo el siguiente código en clojure:
(do
(println "starting....")
(sig! a 0)
(sig! b 0)
(future
(Thread/sleep 4000)
(println "switch 1")
(sig! a 1)
(sig! b 0)
(Thread/sleep 4000)
(println "switch 2")
(sig! a 0)
(sig! b 1)
(Thread/sleep 4000)
(println "switch 3")
(sig! a 1)
(sig! b 1)) nil))
Tengo algunos observadores que escuchan los átomos a, b, sy c1 e imprimen algunas cadenas cuando cambian. Utilizando(print (str uid ":" @o "\n")
o la versión println. Los documentos de clojure dicenprint
yprintln
debe comportarse exactamente de la misma manera, con la excepción de la nueva línea enprintln
Sin embargo, no estoy viendo esto. Cuando el observador usaprintln
Veo las cuerdas de inmediato. Cuando el observador usaprint
. Solo veo la salida cuando la próximaprintln
se llama. A continuación tengo la salida conprintln
vs conprint
. Conprint
Solo veo los valores hasta el últimoprintln
.
starting....
switch 1
a:1
s:1
switch 2
a:0
b:1
s:0
s:1
switch 3
Ahora con println
starting....
switch 1
a:1
s:1
switch 2
a:0
b:1
s:0
s:1
switch 3
a:1
s:0
c1:1
Como puede ver, los cambios recogidos por los observadores se imprimen en este caso. Estoy usando clojure 1.5. Casi parece unprint
requiere unprintln
para vaciar su contenido a la consola.