通常はファイル出力しないデバッグ用ログでも、メソッド呼び出しの際に toString で文字列生成されるので実は無駄にコストがかかっているという場合に使える(のか?)。
class Test {
override def toString : String = {
println("called Test#toString")
"Hello World"
}
}
def log1(msg: String) : Unit = {
println("log start")
println(msg)
println("log end")
}
val t = new Test
// メソッドを呼び出したタイミングで文字列が生成される
log1(t.toString)
この場合、メソッド呼び出しの時点で文字列が生成される
called Test#toString log start Hello World log end
=> をつけて名前付きパラメータにしてみる
def log2(msg: => String) : Unit = {
println("log start")
println(msg)
println("log end")
}
評価されるタイミングで文字列が生成される
log start called Test#toString Hello World log end
他つかいどころはなんだろう。