Kim*_*bel 45 compatibility scala println
我一直认为这Predef.println只是一个捷径System.out.println,但显然我错了,因为它似乎根本没用System.out.为什么会这样?我怎样才能System.out在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
"
Run Code Online (Sandbox Code Playgroud)
4e6*_*4e6 39
Predef.println是快捷方式Console.println,您可以使用Console.setOut或Console.withOut重定向.
此外,Console.setOut仅在System.setOut影响整个JVM时影响当前线程.另外,Scala 2.9 repl在其自己的线程中评估每一行,因此Console.setOut在那里不可用.
scala> val baos = new java.io.ByteArrayOutputStream
baos: java.io.ByteArrayOutputStream =
scala> Console.withOut(baos)(print("hello"))
scala> println(baos)
hello
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36238 次 |
| 最近记录: |