println(something) の要件がありますが、何も println せず、新しい行も印刷されません。Scala でそれを行うにはどうすればよいですか? 上記のprintlnの「何か」は、私の要件を満たすために何をすべきですか?
4 に答える
scala> Console.setOut(new java.io.PrintStream(new java.io.OutputStream() { def write(b: Int) {} }))
scala> println("test")
scala>
google scala-user mailing listからのFlorian Harsの返信に関連しているだけです。
問題をもう一度述べさせてください。コード ソース ファイルの解析中にコメントを無視する必要がある割り当てがあります。
実際には、ソース ファイルの解析結果を出力する割り当てをテストするための主な定義がありprintln
、解析されたコメントを無視するステートメントが必要なため、教師の条件が満たされます。
この場合、「正しい」解決策は、println
印刷を防ぐ方法を見つけることではなく、パーサー/レクサーを変更して、コメントに遭遇したときに解析済みトークンを生成しないようにすることです。
他の方法は、特定の「コード構成」を利用して割り当てを正しく行うための「トリック」にすぎません...
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!
まだ scala インタープリターを実行している場合は、:quit コマンドを入力して終了できます。これを hello.scala という名前のファイルに入れます。
println("Hello, world, from a script!")
次に実行します:
scala hello.scala
さらに別の挨拶が表示されるはずです。
ハロー、ワールド、台本から!