Kotlin中`return@`是什么意思以及如何正确使用返回标签?
大家好!我正在学习Kotlin,遇到了一个奇怪的构造`return@`。我在RxJava的代码中看到它,但不明白它的用途。\n\n我有这样的代码:\n\n```kotlin\nfun main() {\n listOf(1, 2, 3, 4, 5).forEach {\n if (it == 3) {\n return@forEach\n }\n println(it)\n }\n println("完成")\n}\n```\n\n我本以为`return`会直接退出forEach,但它却退出了整个main函数。没有`@forEach`,代码甚至无法编译,报错"return is not allowed here"。为什么会这样?\n\n我还看到了一个RxJava的例子:\n\n```kotlin\nobservable.subscribe { value ->\n if (value.isInvalid()) {\n return@subscribe\n }\n process(value)\n}\n```\n\n`return@subscribe`是什么意思?为什么不能直接写`return`?请解释一下这些标签是如何工作的。什么时候需要使用它们,什么时候可以不用?我对这个语法完全困惑了。提前感谢!\n<<>>\n