scala compatibility println

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 "