1

我正在使用 metrics-scala 库,但不明白为什么下面的两个调用的行为完全不同

// 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 才能让它工作。

4

1 回答 1

8

在我看来,在第一种情况下,您正在计时声明计算昂贵操作的函数的操作,而在第二种情况下,您实际上是在计时昂贵操作本身。

于 2012-05-23T18:11:45.743 回答