6.2.1 为什么引入 lambda 表达式
lambda 是可以传递的代码块.
偷笑, Go 中的函数是一等公民.
6.2.2 lambda 表达式的语法


没有参数仍要写 ():

自动推断类型:

参数只有一个并且类型可推导时, 可省略 ():

自动推导返回值类型
- 必须有返回值
6.2.3 函数式接口
只有一个方法的接口.

通过泛型接口来保存 lambda 表达式:

6.2.4 方法引用
传递方法:
var timer = new Timer(1000, System.out::println);
赋值时自动生成对象:
Runnable task = System.out::println;
6.2.5 构造器引用

数组的构造器引用:
int[]::new
6.2.6 变量作用域
不能在 lambda 中更改自由变量的值:
- start

不能引用会变化的自由变量:
- i


lambda 捕获变量的规则:
- 变量是事实最终变量
lambda 内的作用域与其所在作用域是同一个作用域:

this 是 lambda 所在的对象的:

