java和kotlin 对于for循环和forEach里面的return分别有何不同

前言

'break' and 'continue' are only allowed inside a loop

"break"和"continue"只能在循环中使用,forEach实际上是一个匿名函数

只有是循环才会有以下说法:

  • return. 默认情况下,从最近的封闭函数或匿名函数返回
    -By default returns from the nearest enclosing function or anonymous function.()
  • break. .(终止最近的封闭循环)
    -Terminates the nearest enclosing loop.(终止最近的封闭循环)
  • continue. (继续执行最近的封闭循环的下一步)
    -Proceeds to the next step of the nearest enclosing loop.(继续执行最近的封闭循环的下一步)

一 . 在java和Kotlin的 普通for循环 和 增强for循环 里面return、break、continue的含义

举例:

kotlin 复制代码
    private fun forTest() {
        val list = listOf("one", "two", "three", "four", "five")
        list.let {
            for (value in list) {
                if (value == "three") {
                    "循环满足条件 -> $value".i()
                    continue // 结束很次循环
//                    break // 结束本次循环,并跳出循环
//                    return // 结束本次循环,并跳出循环,并跳出forTest方法体
//                    return@let // 并跳出let方法体,继续往下执行
                }
                "结束单次循环 -> $value".i()
            }
            "结束for循环 -> end for".i()
        }
        "结束let方法 -> end let".i()
    }

continue

复制代码
I/=={========>: 结束单次循环 -> one
I/=={========>: 结束单次循环 -> two
I/=={========>: 循环满足条件 -> three
I/=={========>: 结束单次循环 -> four
I/=={========>: 结束单次循环 -> five
I/=={========>: 结束for循环 -> end for
I/=={========>: 结束let方法 -> end let
I/=={========>: 结束测试方法 -> end test

break

复制代码
I/=={========>: 结束单次循环 -> one
I/=={========>: 结束单次循环 -> two
I/=={========>: 循环满足条件 -> three
I/=={========>: 结束for循环 -> end for
I/=={========>: 结束let方法 -> end let
I/=={========>: 结束测试方法 -> end test

return

复制代码
I/=={========>: 结束单次循环 -> one
I/=={========>: 结束单次循环 -> two
I/=={========>: 循环满足条件 -> three
I/=={========>: 结束测试方法 -> end test

return@let

复制代码
I/=={========>: 结束单次循环 -> one
I/=={========>: 结束单次循环 -> two
I/=={========>: 循环满足条件 -> three
I/=={========>: 结束let方法 -> end let
I/=={========>: 结束测试方法 -> end test

小结:

1、break: 停止循环,跳出循环,但只能结束一层循环。

2、continue:结束的是本次循环,将接着开始下一次循环。

3、return:同时结束其所在的循环和其外层循环。

二. 在Kotlin的forEach里面return、break、continue的含义

举例:

kotlin 复制代码
    private fun forEachTest() {
        val list = listOf("one", "two", "three", "four", "five")
        list.let {
            list.forEach { value ->
                if (value == "three") {
                    "循环满足条件 -> $value".i()
//                    continue // 不支持
//                    break // 不支持
                    return@forEach //结束很次循环
//                    return@let // 并跳出let方法体,继续往下执行
//                    return //结束本次循环,并跳出循环,forEachTest
                }
                "结束单次循环 -> $value".i()
            }
            "结束for循环 -> end for".i()
        }
        "结束let方法 -> end let".i()
    }

return@forEach

复制代码
I/=={========>: 结束单次循环 -> one
I/=={========>: 结束单次循环 -> two
I/=={========>: 循环满足条件 -> three
I/=={========>: 结束单次循环 -> four
I/=={========>: 结束单次循环 -> five
I/=={========>: 结束for循环 -> end for
I/=={========>: 结束let方法 -> end let
I/=={========>: 结束测试方法 -> end test

return@let

复制代码
I/=={========>: 结束单次循环 -> one
I/=={========>: 结束单次循环 -> two
I/=={========>: 循环满足条件 -> three
I/=={========>: 结束let方法 -> end let
I/=={========>: 结束测试方法 -> end test

return

复制代码
I/=={========>: 结束单次循环 -> one
I/=={========>: 结束单次循环 -> two
I/=={========>: 循环满足条件 -> three
I/=={========>: 结束测试方法 -> end test

小结:

1、break: 停止循环,跳出循环,但只能结束一层循环。

2、return@forEach 结束的是本次循环,将接着开始下一次循环。

3、continue:不支持('break' and 'continue' are only allowed inside a loop)

4、return:不支持('break' and 'continue' are only allowed inside a loop)

相关推荐
Hy行者勇哥10 分钟前
Python 与 VS Code 结合操作指南
开发语言·python
大力水手(Popeye)12 分钟前
Pytorch——tensor
人工智能·pytorch·python
bingbingyihao12 分钟前
多数据源 Demo
java·springboot
飞翔的佩奇4 小时前
【完整源码+数据集+部署教程】表盘指针检测系统源码和数据集:改进yolo11-CA-HSFPN
python·yolo·计算机视觉·数据集·yolo11·表盘指针检测
larance5 小时前
SQLAlchemy 的异步操作来批量保存对象列表
数据库·python
在努力的前端小白5 小时前
Spring Boot 敏感词过滤组件实现:基于DFA算法的高效敏感词检测与替换
java·数据库·spring boot·文本处理·敏感词过滤·dfa算法·组件开发
搏博5 小时前
基于Python3.10.6与jieba库的中文分词模型接口在Windows Server 2022上的实现与部署教程
windows·python·自然语言处理·flask·中文分词
lxmyzzs6 小时前
pyqt5无法显示opencv绘制文本和掩码信息
python·qt·opencv
萧鼎7 小时前
Python pyzmq 库详解:从入门到高性能分布式通信
开发语言·分布式·python
一叶飘零_sweeeet7 小时前
从繁琐到优雅:Java Lambda 表达式全解析与实战指南
java·lambda·java8