lambda表达式是什么玩意?
一言蔽之:lambda表达式就是一个匿名函数
我们通常这样写匿名函数:

匿名函数
这样写可能有点麻烦,我们使用lambda表达式可以这么写:

lambda
嘿嘿,是不是简介了很多,当然还可以更加简洁。
lambda如何写?
-
声明
-
实现
可以这么写:
由于知道了出入参数的是什么类型,我们还可以这么写:
嘿嘿,是不是很简洁。
更加简洁:
考虑到通常情况下,匿名函数只有一个参数,所以咱们的lambda可以这么写:

it
注意:
在lambda中不可用直接使用return:

你可以使用return+label这种形式:

lambda中最后一个表达式的值是默认的返回值:

高阶函数是啥玩意?
高阶函数
名字起的很高大上,其实它就是个函数。
只不过这个函数特征是:参数是函数,或者返回值是函数,如下图:
-
参数是函数
-
返回值是函数
解释:
在kotlin中,函数是一种类型,所以我们可以把一个具体的函数当成对象。
既然函数是一个对象啦,我们想怎么玩这个对象就怎么玩。
比如:
- 把函数当成参数传递
- 把函数当成返回值传递出来
如何将函数传递给高阶函数?
我们明白了高阶函数的定义,那么如何给高阶函数传参呢?

实用场景:
比如我们要对int的集合做变换:

你现在只要提供一个变换函数即可,想怎么变换由你,是不是很灵活!
