Kotlin匿名函数与闭包详解

Lambda表达式实例演练:

继续先来编写一些Lambda表达式相关的代码:

Kotlin匿名函数与闭包详解_第1张图片

接下来想从上面的字符串数组中找到带有"h"的字符串并打印出来:

Kotlin匿名函数与闭包详解_第2张图片

如果学习了Java8的Lambda表达式,上面这程序真的是so easy,继续更换条件,找到字符串长度大于4的字会串并打印,依葫芦画瓢:

Kotlin匿名函数与闭包详解_第3张图片

接下来再来新需求:找出包含不区分大小写字母"d"的字符串,然后将匹配的字符串以大写进行输出,如下:

Kotlin匿名函数与闭包详解_第4张图片

Lambda表达式返回值:

在默认情况下,Lambda表达式中最后一个表达式的值会隐式作为该Lambda表达式的返回值,我们可以通过全限定的return语法来显示从Lambda表达式返回值。下面用代码来说明下:

Kotlin匿名函数与闭包详解_第5张图片

 解决的办法就是:

Kotlin匿名函数与闭包详解_第6张图片

接着还可以这样写:

Kotlin匿名函数与闭包详解_第7张图片

它就是对应于“我们可以通过全限定的return语法来显示从Lambda表达式返回值”。如果这样写就会报错:

Kotlin匿名函数与闭包详解_第8张图片

Kotlin匿名函数与闭包详解_第9张图片

其实指的是这个意思,应该这样写:

Kotlin匿名函数与闭包详解_第10张图片

当然也可以不用return啦:

Kotlin匿名函数与闭包详解_第11张图片

匿名函数【了解既可,比较繁琐】:

下面咱们定义一个匿名函数:

Kotlin匿名函数与闭包详解_第12张图片

当然如果放在main()方法外肯定就不行了:

Kotlin匿名函数与闭包详解_第13张图片

其中匿名函数也可以这样写:

Kotlin匿名函数与闭包详解_第14张图片

那对于一个函数木有名字如何使用呢,其实一般只能用Lambda表达式来使用它,下面来看一下:

Kotlin匿名函数与闭包详解_第15张图片

其实还可以改为匿名函数的形式,如下:

Kotlin匿名函数与闭包详解_第16张图片

闭包:

我们知道JavaScript中闭包是很重要的概念,那在Koltin中有啥作用呢?下面看代码:

Kotlin匿名函数与闭包详解_第17张图片

这个代码在Java中是不被允许的,很显然在Kotlin是在Lambda表达式中来访问外层作用域的变量,这就是闭包。

你可能感兴趣的:(从java到Kotlin,字符串,java,lambda,python,js)