呼叫时间(()=> {})和时间{}之间有什么区别?

时间:2012-05-23 18:06:06

标签: scala higher-order-functions

我正在使用metrics-scala库,并且无法理解为什么下面两个调用的行为完全不同

// method 1
writeTimer.time(() => {
  // expensive operation
})

// method 2
writeTimer.time {
  // expensive operation
}

在方法1的情况下,从不调用昂贵的操作,而在方法2中,它是。

writeTimercom.yammer.metrics.Timer的一个实例,其中time方法声明为:

/**
 * Runs f, recording its duration, and returns the result of f.
 */
def time[A](f: => A): A

我刚刚在我的代码中解决了一个错误,我必须使用方法2来使其工作。

1 个答案:

答案 0 :(得分:8)

在我看来,在第一种情况下,你正在计算声明一个计算昂贵操作的函数的操作,而在第二种情况下,你实际上正在计算昂贵的操作本身。< / p>