Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何打印(某物)但不打印';不要在控制台上打印任何东西_Scala_Comments_Lexer_Println - Fatal编程技术网

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(某物)的要求,但没有println任何东西,也没有打印新行,我如何在Scala中做到这一点?
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>