第一级值

长久以来一直不太明白之前在 lua 一本书中提到的 "第一类值"

直到今天在一本书上看到类似的解释:

上述说的是第一级值, 猜想应该是第一类值拥有第一级特权

 

第一类函数

以下摘自 wiki 对第一类函数(first-class function)的解释

 

高阶函数

顺便 wiki 说了一下什么是高阶函数

 

lambda 是如何工作的

在上面基础上, 让 lambda 捕获局部变量和全局变量

其中关键之处在于对待全局变量的方式, 这有可能产生错误, 事实也的确错了

那么如果我加上 mutable 去更改这个 gi 呢?

上述结果, 编译器(gcc 4.8.5)只有一个警告

但是如果不注意这个细节, 去捕获全局变量, 可能会有很严重的错误

接下来专注一下类类型变量, 他会如何捕获 (这里的代码就有点头疼了)

值拷贝类的时候, 会将整个类拷贝一次, 并没有什么特殊的

匿名函数与其说是函数, 不如说是类 他就像一个重载了调用运算符的类一样