kotlin循环

最近在写项目时遇到了一个关于kotlin跳出循环的问题,由于项目原因,直接拿下面的一个简单的例子做demo吧。

一. 问题

首先,我们先看一个正常的函数跳出循环,大家都会,我就直接贴代码:

val list = listOf(1, 2, 3, 4, 5)
for (num in list) {
    if (count == 3) {
        break // 退出循环
    }
    // 打印 1和2
    println(num)
}

实际开发过程中,我使用了list.forEach函数

// label@标签
list.forEach label@{
    if (it == 3) {
        // 在这里return之后,实际上并没有跳出循环
        return@label
    }
    // 打印 1 2 4 5
    println("label:$it")
}

上述例子中,在调用return@label之后,实际并没有跳出循环,我们想要的是当it值为3时,就跳出循环,打印1、2,实际打印1、2、4、5,跟continue一样

for (i in list) {
    if (i == 3) {
        continue
    }
    println("continue:$i")
}

那么为什么forEach函数不可用跳出循环?

forEach 是一个高阶函数,它接收一个 lambda 表达式作为参数,并将其应用于集合中的每个元素。因为 forEach 仅仅是对集合中的\color{red}{每个元素进行遍历,所以它并没有返回值}。

最后讲下list.forEach和for循环有什么区别

  1. 语法结构不同:list.forEach 是一个高阶函数,它接收一个 lambda 表达式作为参数。而 for (num in list) 是一个基于迭代器的语法结构,它使用 in 关键字来遍历集合中的元素。

  2. 返回值不同:list.forEach 没有返回值,它仅仅是将 lambda 表达式应用于集合中的每个元素。而 for (num in list) 返回遍历过程中的每个元素,你可以使用这个返回值来做其他操作。

  3. 可读性不同:list.forEach 的语法结构更加简洁,特别适合对集合进行简单的操作。而 for (num in list) 的语法结构更加灵活,你可以在其中编写任意的逻辑处理。

  4. 可读性不同:list.forEach 的语法结构更加简洁,特别适合对集合进行简单的操作。而 for (num in list) 的语法结构更加灵活,你可以在其中编写任意的逻辑处理。

二. 结论

  1. 简单地对集合中的元素进行遍历就使用list.forEach
  2. 遍历集合做复杂逻辑处理或者需要返回遍历的元素使用 for (num in list)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 循环用法: if , when , for , while if 表达式 在 Kotlin 中,if 是带有返回值...
    Gavin_2020阅读 2,120评论 0赞 1
  • 原文地址:Kotlin 循环控制 1. For 循环 for 循环可以对任何提供迭代器(iterator)的对象进...
    Little丶Jerry阅读 766评论 0赞 0
  • 前面其实我们在一些Demo中已经接触到了循环的一些用法。 For 循环 for 循环可以对任何提供迭代器(iter...
    郎官人阅读 1,924评论 0赞 2
  • 一、循环语句 for循环 //循环遍历字符串,不包含选定字符 for循环带索引 forEach循环 forEach...
    宋song一阅读 811评论 0赞 1
  • Java的辉煌与阴影 1995年,当年如日中天的Sun公司发布了Java语言,引起了巨大的轰动,与当时主流的C语言...
    private_object阅读 447评论 0赞 0

友情链接更多精彩内容