所有的计算机程序总结起来只干了三件事情,顺序,条件,循环。
在Java中可以用 break, continue, return来进行循环控制,Kotlin中也是一样。
但是因为Kotlin有面向函数(闭包)的概念,情况有点不一样,
看看下面的代码输出结果是什么,
输出
12
1245 reach fooAnonymous() end
两个函数都是遍历1-5输出,在3的地方跳过。
不同的地方是 fooAnonymous()函数在 forEach() 中包了一个闭包(函数)。
这样输出结果就非常不同了。第一个函数直接跳出循环,而第二个只跳出了一次。
原因
上面两个输出结果不同的原因是在于return的返回地方不同。
在Java耕耘多年的同学可能一时没弄明白,不过只要换一下思路就能理解这里面的原理了。
Kotlin是一种面向函数/对象的语言,在 fooAnonymous()函数的 forEach() 中我们传入了一个闭包,
这个闭包是个匿名函数(Java没有的概念),虽然看似return是从 fooAnonymous()中返回的,但因为匿名函数的存在,实际上 return是从匿名函数中返回的。
匿名函数接受 Int型参数,然后做了跟 fooList()一样的打印,并且在 value == 3的时候返回。
所以从 Java的角度可以看成下面这样子
Kotlin的闭包是非常好用的东西,不过对于初次转面向函数的同学可能坑略多,但只要上手了,这东西绝对是事半功倍的利器。
领取专属 10元无门槛券
私享最新 技术干货