前面的整理我們也已經說到了,使用lambda表示式的主要原因是,將**的執行延遲到乙個合適的時間點。在使用lambda表示式的時候務必記住一點就是說lambda表示式都是延遲執行的。
延遲執行**的原因有很多,具體的如下。
1,在另外乙個執行緒中執行**
2,多次執行**
3,在某個演算法的正確時間點上執行**,比如排序中的比較操作
4,當某些情況發生時才執行**
5,只有在需要的時候才執行**。
當我們在使用lambda表示式的時候,就應該好好的考慮下希望達到什麼樣的效果。這裡來舉乙個日誌的例子吧。
我們在使用logger.info輸出日誌,**如下:logger.info("x的長度是:" + x.length());**是沒問題,但是這裡會有乙個效能上的問題來,不管上面的**是否被真的執行,這個x的字串都會被計算然後傳遞給info方法,那麼為什麼我們不能再確定需要列印的時候,再去計算這個字串呢?
怎麼改進一下好呢?慣用的辦法就是將上面的這段**包裝成乙個無引數的lambda的表示式,只有在需要的時候才能執行**,這也是使用lambda表示式的一種情況。
現在我們來編碼,這段編碼實際的執行效果分如下步驟:
1,接受lambda表示式
2,檢查他是否應該被呼叫
3,在需要的時候呼叫它。
以下是包裝過後的**:
public class linkin
} public static void main(string args)
}
Lambda系列 語法高階
普通方法的引用 語法格式 構造方法的引用 將lambda表示式的實現指向乙個已經實現的方法,換句話說就是將lambda的實現抽取到乙個方法中。方法引用分為靜態方法引用和非靜態方法引用 public static void main string args private static int tak...
python 高階之路 繫結延遲
看看下面一題,試著寫出自己的答案。defmultipliers return lambda x i x for i in range 4 print m 2 for m in multipliers print type multipliers res 6,6,6,6 list 輸出結果不是我們想的...
函式式程式設計 Lambda的延遲執行
有些場景的 執行後,結果也不一定會被使用,從而造成效能浪費。而lambda表示式是延遲執行的,這正好可以作為解決方案,提公升效能。效能浪費的日誌案例並使用lambda表示式進行優化解決 未使用lambda之前public class demo public static void main stri...