mutable
使用情形:个人理解yqdsl需要匿名函数从外部捕获参数并在函数内部进行修改时,这个时候就可以使用mutable关键字。
之前我们在类中的常成员函数中的变量是不可以修改的,但是一旦定义为mutable就可以修改。
1.未增加mutable不可以修改参数
2. 增加mutable之后代表t是可以修改的
3. 两个问题:
(1)为什么main函数中t的值没有修改?
这是因为按值捕获,内部修改不会改变t的值。
(2)那为什么匿名函数内部的t会发生改变呢?
运行程序可以得到如下结果:
main函数中t的地址:
匿名函数中t的地址:
main函数和匿名函数中t的地址是不同的,大家应该也看出来了。
原因:在匿名函数中的t是从main函数中拷贝出来的,在匿名函数作用域中是独一无二的,也是与main中的不是一个t。
4. 相同名称参数在不同匿名函数中的值
下面程序赋值之前的匿名函数,都调用t。
运行之后可以看到:在不同的匿名函数中会拷贝一份专属于当前作用域的变量,而不会相互干扰。
5.学习视频地址:匿名函数mutable
6.学习笔记:匿名函数mutable笔记