2012-05-23 77 views
1

我使用的指標,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,以得到它的工作。

回答

8

在我看來,在第一種情況下,您正在計劃的操作,聲明函數計算昂貴的操作,而在第二種情況下,您實際上是在計算昂貴的操作本身。

+0

OMG,這是輝煌的...感謝您的發現! –

相關問題