其他
Kotlin中return@forEach了个寂寞
(1..7).forEach {
if (it == 3) {
return@forEach
}
Log.d("xys", "Num: $it")
}
Num: 1
Num: 2
Num: 4
Num: 5
Num: 6
Num: 7
很遗憾,即使等于3之后就return了,但是然并卵,遍历依然继续执行了。相信很多写Kotlin的开发者都遇到过这个问题,其原因,还是在于语法的思维定势,我们在Kotlin的文档上,可以找到非常明确的解释。
/**
* Performs the given [action] on each element.
*/
@kotlin.internal.HidesMembers
public inline fun <T> Iterable<T>.forEach(action: (T) -> Unit): Unit {
for (element in this) action(element)
}
内联函数 高阶函数
(1..7).forEach {
if (it == 3) {
return
}
Log.d("xys", "Num: $it")
}
run loop@{
(1..7).forEach {
if (it == 3) {
return@loop
}
Log.d("xys", "Num: $it")
}
}
当然这里不仅限于run,任何闭包都是可以的。
最后推荐一下我做的网站,玩Android: wanandroid.com ,包含详尽的知识体系、好用的工具,还有本公众号文章合集,欢迎体验和收藏!
推荐阅读:
扫一扫 关注我的公众号
如果你想要跟大家分享你的文章,欢迎投稿~
┏(^0^)┛明天见!