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
"