1.匿名函数
定义时不取函数名字,我们称之为匿名函数,匿名函数通常整体传递给其他函
数或者从其他函数返回
匿名函数对kotlin很重要,有了它,我们能够根据需要定制特殊规则,
轻松定制标准库里的内置函数
函数参数:和具名函数一样,匿名函数可以不带参数,也可以带一个或多个任何
类型的参数,需要参数时,参数的类型放在匿名函数的类型定义中
参数名则放在函数定义中
定义只有一个参数的匿名函数时,可以使用it关键字来表示参数名
当你传入两个或以上时,it关键字就不不能用了
2.函数类型与隐式返回
匿名函数也有类型,匿名函数可以当作变量赋值给函数类型变量,
就像其他变量一样匿名函数就可以在代码里传递了
匿名函数不需要return关键字来返回数据,匿名函数会隐式或自动返回函数体
最后一行语句的结果
3.函数内联
在JVM上,你定义的lambda会以对象实例的形式存在,JVM会为所有同lambda打
交道的变量分配内存,这就产生了内存开销。更糟的是lambda的内存开销会带来
严重的性能问题。幸运的是,kotlin有一种优化机制叫内联,有了内联,JVM就
不需要使用lambda对象实例了,因而避免了变量内存分配。哪里需要使lambda,
编译器就会将函数体复制粘贴到哪里。
4.函数引用
函数引用可以把一个具名函数转换成一个值参,
用::即可
使用lambda表达式的地方,都可以使用函数引用