Kotlin的循环控制

所有的计算机程序总结起来只干了三件事情,顺序,条件,循环。

在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的闭包是非常好用的东西,不过对于初次转面向函数的同学可能坑略多,但只要上手了,这东西绝对是事半功倍的利器。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180711G09Z3500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券