私はmetrics-scalaライブラリを使用していますが、以下の2つの呼び出しが完全に異なる動作をする理由を理解できません
// method 1
writeTimer.time(() => {
// expensive operation
})
// method 2
writeTimer.time {
// expensive operation
}
方法1の場合、コストのかかる操作が呼び出されることはありませんが、方法2の場合は呼び出されます。
writeTimer
はのインスタンスでcom.yammer.metrics.Timer
あり、time
メソッドは次のように宣言されています。
/**
* Runs f, recording its duration, and returns the result of f.
*/
def time[A](f: => A): A
コードのバグを解決したところ、メソッド2を使用して機能させる必要がありました。