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

Fra*_*eil 1 scala higher-order-functions

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

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

// method 2
writeTimer.time {
  // expensive operation
}
Run Code Online (Sandbox Code Playgroud)

在方法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
Run Code Online (Sandbox Code Playgroud)

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

mur*_*d99 8

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