lambda表达式和高阶函数

转载:http://www.jianshu.com/p/1937d532a120

lambda表达式是什么?

lambda表达式就是一个匿名函数
我们通常这样写匿名函数:

匿名函数

这样写可能有点麻烦,使用lambda表达式可以这么写:

lambda

当然还可以更加简洁

lambda如何写?

  • 1.声明


    声明
  • 2.实现
    可以这么写


    2596054-2bad4ab284003700.png

由于知道了出入参数的是什么类型,我们还可以这么写:


2596054-0ff059ac72d5a4cb.png
  • 更加简洁:
    在lambda中不可用直接使用return:


    2596054-ea9a5783db3d294f.png

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


2596054-18e14ec575e8b813.png

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


2596054-936a3e72d765a60e.png

高阶函数是啥玩意?

高阶函数其实它就是个函数。只不过这个函数特征是:参数是函数,或者返回值是函数,如下图:
  • 1.参数是函数


    2596054-78e91ad0af0ed61b.png
  • 2.返回值是函数


    2596054-32a7b5af25661995.png
解释:

在kotlin中,函数是一种类型,所以我们可以把一个具体的函数当成对象。
既然函数是一个对象啦,我们想怎么玩这个对象就怎么玩。
比如:
1.把函数当成参数传递
2.把函数当成返回值传递出来

如何将函数传递给高阶函数?

我们明白了高阶函数的定义,那么如何给高阶函数传参呢?

实用场景:

比如我们要对int的集合做变换:

2596054-53ce00d65f7387ee.png

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

2596054-c867cfd970acbbab.png

推荐阅读更多精彩内容