上个月,淡丶无欲 让我写一期关于 闭包 的随笔,其实惭愧,我对闭包也是略知一二 ,不能给出一个很好的解释,担心自己讲不出个所以然来。 所以带着学习的目的来写一写,如有错误,忘不吝赐教 。

为什么要有闭包?

初识闭包时,,我一直在想,为什么只有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);
        }
    }
}

延伸阅读

学习是年轻人改变自己的最好方式-Java培训,做最负责任的教育,学习改变命运,软件学习,再就业,大学生如何就业,帮大学生找到好工作,lphotoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训学习是年轻人改变自己的最好方式