Scala 如何打印(某物)但不打印';不要在控制台上打印任何东西
我有一个println(某物)的要求,但没有println任何东西,也没有打印新行,我如何在Scala中做到这一点?Scala 如何打印(某物)但不打印';不要在控制台上打印任何东西,scala,comments,lexer,println,Scala,Comments,Lexer,Println,我有一个println(某物)的要求,但没有println任何东西,也没有打印新行,我如何在Scala中做到这一点? println中上面的“something”应该是什么才能满足我的要求?如果您仍在运行scala解释器,可以通过输入:quit命令退出解释器。将其放入名为hello.scala的文件中: println("Hello, world, from a script!") 然后运行: 你好,斯卡拉 你应该得到另一个问候: 你好,世界,来自脚本println(…)将始终打印换行符,无论
println中上面的“something”应该是什么才能满足我的要求?如果您仍在运行scala解释器,可以通过输入:quit命令退出解释器。将其放入名为hello.scala的文件中:
println("Hello, world, from a script!")
然后运行:
你好,斯卡拉
你应该得到另一个问候:
你好,世界,来自脚本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!
我只是引用了来自谷歌的弗洛里安·哈斯(Florian Hars)的回复,这似乎更好地阐明了这一点
让我重申一下您的问题:您有一个任务,在解析某些代码源文件时需要忽略注释
实际上,您有一个主定义来测试作业,该作业打印出解析源文件的结果,并且希望println
语句忽略解析后的注释,以便满足教师的条件
如果是这种情况,那么“正确”的解决方案不是找到阻止打印的方法,而是修改解析器/词法分析器,以避免在遇到注释时生成已解析的标记
另一种方法是通过利用特定的“代码配置”来获得正确的赋值的“技巧”…如果不想打印换行符,不要调用println,因为它正是这样做的。我不明白你的要求。你想打印()而实际上什么都不打印?你为什么要这么做?是的,我想。我有一个语言lexer作业(lexer.scala),我需要重新注册并忽略来自该语言的注释,但是main.scala被迫在重新注册的标记中使用println,这是由我的老师修复的,测试用例结果也是由他修复的:(.向你的老师解释这个问题,而不是试图找到解决这个问题的诀窍。也被问到如果你还在运行scala解释器,这会起作用。我不明白你的答案,你能给我一些解释吗?@MinhTrietPhamTran这只是另一个无用的诀窍。它将标准输出设置为
打印Stream
包含一个自定义子类OutputStream
,其中write()
方法被实现为不执行任何操作。
scala> Console.setOut(new java.io.PrintStream(new java.io.OutputStream() { def write(b: Int) {} }))
scala> println("test")
scala>