println vs System.out.println en Scala
compatibility (1)
Predef.println
es un acceso directo para Console.println
y puede usar Console.setOut
o Console.withOut
para redireccionar.
Además, Console.setOut
solo afecta al hilo actual mientras System.setOut afecta a toda la JVM. Además Scala 2.9 repl
evalúa cada línea en su propio hilo, por lo que Console.setOut
no se puede utilizar allí.
scala> val baos = new java.io.ByteArrayOutputStream
baos: java.io.ByteArrayOutputStream =
scala> Console.withOut(baos)(print("hello"))
scala> println(baos)
hello
Siempre pensé que Predef.println
era simplemente un atajo para System.out.println
, pero aparentemente estoy equivocado, ya que no parece usar System.out
en absoluto. ¿Por qué es así? ¿Y cómo puedo hacer el "redireccionamiento" de System.out
continuación en Scala?
scala> val baos = new java.io.ByteArrayOutputStream
baos: java.io.ByteArrayOutputStream =
scala> val ps = new java.io.PrintStream(baos)
ps: java.io.PrintStream = java.io.PrintStream@6c5ac4
scala> System.setOut(ps)
scala> println("hello")
hello
scala> new String(baos.toByteArray)
res2: java.lang.String = ""
scala> System.out.println("hello")
scala> new String(baos.toByteArray)
res7: java.lang.String =
"hello
"