我要啦免费统计

Blog Archives

欲求理解,先求创造

前几天在面试腾讯的时候,面试官问了我这样一道题:如何用C语言来实现一个闭包。虽然我之前的面试回答不堪入目(基础不扎实啊),但听到这道题后还是小小的兴奋了一下。由于我平时就偏爱fp一些,再加上神级课程programming language把闭包讲的很透彻,还动手实现了一个解析闭包的解释器,所以这道题我还是很有自信的。

闭包是fp中的基本概念,其含义就是函数体+其定义时的环境(lexical scope)。因为c语言并不支持lexical scope,所以我们必须将函数定义时的环境保存到某个变量中,需要时再将函数指针和这个变量一起传递即可。

这其实并不是我原生的想法,在programming language 课程中,老师Dan为了让大家理解什么是闭包分别在静态语言的ml中和动态的scheme中分别演示了lexical scope的作用域。但真正使我印象深刻,也是真正使我确定什么是闭包的,是Dan在最后又写了一段java代码和一段c代码,告诉我们这就是闭包。

Read more »

Post Footer automatically generated by wp-posturl plugin for wordpress.