前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kotlin的循环控制

Kotlin的循环控制

作者头像
PhoenixZheng
发布2018-08-07 16:14:04
3350
发布2018-08-07 16:14:04
举报

所有的计算机程序总结起来只干了三件事情,顺序,条件,循环。 在Java中可以用 break, continue, return来进行循环控制,Kotlin中也是一样。 但是因为Kotlin有面向函数(闭包)的概念,情况有点不一样, 看看下面的代码输出结果是什么,

fun fooList() {
  listOf(1, 2, 3, 4, 5).forEach {
    if(it == 3) return
    print(it)
  }
  print(" reach fooList() end")
}

fun fooAnonymous() {
  listOf(1, 2, 3, 4, 5).forEach (fun(value: Int){
    if(value == 3) return
    print(value)
  })
  print(" reach fooAnonymous() end")
}

fun main(args: Array<String>) {
    fooList()
    fooAnonymous()
 }

输出

12 1245 reach fooAnonymous() end

两个函数都是遍历1-5输出,在3的地方跳过。 不同的地方是 fooAnonymous()函数在 forEach() 中包了一个闭包(函数)。 这样输出结果就非常不同了。第一个函数直接跳出循环,而第二个只跳出了一次。

原因

上面两个输出结果不同的原因是在于return的返回地方不同。 在Java耕耘多年的同学可能一时没弄明白,不过只要换一下思路就能理解这里面的原理了。 Kotlin是一种面向函数/对象的语言,在 fooAnonymous()函数的 forEach() 中我们传入了一个闭包, 这个闭包是个匿名函数(Java没有的概念),虽然看似return是从 fooAnonymous()中返回的,但因为匿名函数的存在,实际上 return是从匿名函数中返回的。 匿名函数接受 Int型参数,然后做了跟 fooList()一样的打印,并且在 value == 3的时候返回。 所以从 Java的角度可以看成下面这样子

fun fooAnonymous() {
  listOf(1, 2, 3, 4, 5).forEach (function(it))
  print(" reach fooAnonymous() end")
}

fun function(value : Int) {
    if(value == 3)
      return
}

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Android每日一讲 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原因
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档