gpt4 book ai didi

scala - Scala 中的 println 与 System.out.println

转载 作者:行者123 更新时间:2023-12-02 09:07:36 25 4
gpt4 key购买 nike

我一直以为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
"

最佳答案

Predef.printlnConsole.println 的快捷方式,您可以使用 Console.setOutConsole.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

关于scala - Scala 中的 println 与 System.out.println,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7219316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com