上个月,淡丶无欲 让我写一期关于 闭包 的随笔,其实惭愧,我对闭包也是略知一二 ,不能给出一个很好的解释,担心自己讲不出个所以然来。 所以带着学习的目的来写一写,如有错误,忘不吝赐教 。
为什么要有闭包?
初识闭包时,,我一直在想,为什么只有JS有闭包,c#,c++ 为什么没有 ??
1. 封装局部变量
看下面一个例子,计算 斐波那契 数。
为了能够重用数据,一个通用做法就是将计算过的数据缓存起来,但缓存的数据对外是不可见的 。
看下面的 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
- 阿里移动安全 [无线安全]玩转无线电——不安全的蓝牙锁 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实现JSON转Model - HandyJSON使用讲解 2017-07-26
- 阿里移动安全 Android端恶意锁屏勒索应用分析 2017-07-26
- 集合结合数据结构来看看(二) 2017-07-26
学习是年轻人改变自己的最好方式
