上個月,淡丶無欲 讓我寫一期關于 閉包 的隨筆,其實慚愧,我對閉包也是略知一二 ,不能給出一個很好的解釋,擔心自己講不出個所以然來。 所以帶著學習的目的來寫一寫,如有錯誤,忘不吝賜教 。
為什么要有閉包?
初識閉包時,,我一直在想,為什么只有JS有閉包,c#,c++ 為什么沒有 ??
1. 封裝局部變量
看下面一個例子,計算 斐波那契 數(shù)。
為了能夠重用數(shù)據(jù),一個通用做法就是將計算過的數(shù)據(jù)緩存起來,但緩存的數(shù)據(jù)對外是不可見的 。
看下面的 c# 代碼 :
public static class Fibonacci{ public static Fibonacci(){ cache[0] = 1; cache[1] = 1; } private static IList<int> cache = new List<int>(1000,-1); public static int Calc(n){ if(cache[n] != -1){ return cache[n]; }else{ return cache[n] = Calc(n-1) + Calc(n-2); } } }
延伸閱讀
學習是年輕人改變自己的最好方式
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應用分析 2017-07-26
- 集合結合數(shù)據(jù)結構來看看(二) 2017-07-26