如何println(某物)但不打印任何东西到控制台

时间:2012-09-21 08:11:04

标签: scala comments lexer println

我需要println(某物)但不打印任何东西而且没有打印新行,我怎么能在Scala中做到这一点? println上面的“东西”应该满足我的要求吗?

4 个答案:

答案 0 :(得分:1)

scala> Console.setOut(new java.io.PrintStream(new java.io.OutputStream() { def write(b: Int) {} }))

scala> println("test")

scala>

答案 1 :(得分:1)

我只是关注来自Google scala-user mailing list Florian Hars 回复,这似乎更能说明这一点。

让我重申一下您的问题:您需要在解析某些代码源文件时忽略注释。

实际上你有一个主要的定义来测试赋值,它打印出解析源文件的结果,你希望println语句忽略解析的注释,这样就可以满足老师的条件。

如果是这种情况,那么“正确”的解决方案不是找到一种方法来阻止println打印,而是修改解析器/词法分析器以避免在遇到注释时生成解析后的令牌

另一种方式只是通过利用特定的“代码配置”来获得正确分配的“技巧”......

答案 2 :(得分:0)

println(...)将始终打印换行符,无论您传递什么参数。没有办法阻止它打印换行符。

嗯......当然有以下技巧,但这不太实际。

class Magic {
  override def toString = throw new RuntimeException
}

// Will not print a newline, but will throw an exception
println(new Magic)

// So you'll need to catch it
try {
  println(new Magic)
} catch {
  case e: RuntimeException => // Ignore the exception
}

// Hey, we're here and no newline was printed!

答案 3 :(得分:-2)

如果您仍在运行scala解释器,可以通过输入:quit命令退出它。将其放入名为hello.scala的文件中:

println("Hello, world, from a script!")

然后运行:

  

scala hello.scala

你应该得到另一个问候:

Hello,world,来自脚本!