首页 > 解决方案 > Foreach 没有得到正确的值

问题描述

这里的问题 return@Foreach 没有被执行它总是在 if 语句上返回 false

fun check() {
    var x: Int? = null
    val numbers = 1..100
    numbers.forEach {
        x = it
        if (it == 2) {
            return@forEach
        }
    }
    showingText("$x Hello World")
}

标签: androidandroid-studiokotlin

解决方案


实际上,it==2条件是truewhenit是2,然后执行语句return@forEach。您可以通过简单的日志查看它:

fun check() {
    var x: Int? = null
    val numbers = 1..100
    numbers.forEach {
        println(it)
        x = it
        if (it == 2) {
            println("FINISH")
            return@forEach
        }
    }
    println("$x Hello World")
}

因此,return执行并停止该forEach方法。然后范围序列移动到下一个项目(3、4 等),因此对其运行操作。

如果要在2找到后停止操作,请使用简单循环:

fun check2() {
    var x: Int? = null
    val numbers = 1..100
    for(it in numbers) {
        println(it)
        x = it
        if (it == 2) {
        println("FINISH")
            break
        }
    }
    println("$x Hello World")
}

推荐阅读