📜  Kotlin 中的返回、跳转和标签(1)

📅  最后修改于: 2023-12-03 14:43:41.547000             🧑  作者: Mango

Kotlin 中的返回、跳转和标签

在 Kotlin 中,我们可以使用不同的语句来实现返回、跳转和标签操作,下面我们将分别进行介绍。

返回
return 语句

在函数中使用 return 语句可以提前结束函数的执行,并返回指定的值,例如:

fun add(a: Int, b: Int): Int {
    return a + b
}
中缀表达式

在 Kotlin 中,我们可以使用中缀表达式来简化函数的返回,例如:

infix fun Int.add(b: Int): Int = this + b

然后我们就可以这样使用:

val sum = 1 add 2   // 等同于 val sum = 1.add(2)
匿名函数

在匿名函数中我们也可以使用 return 语句,例如:

fun main() {
    val nums = listOf(1, 2, 3, 4, 5)
    val sum = nums.fold(0) { acc, i ->
        val result = acc + i
        if (i >= 3) return result   // 使用 return 提前结束匿名函数的执行
        result
    }
}
跳转
break 语句

在循环语句中使用 break 语句可以提前结束循环的执行,例如:

fun main() {
    val nums = listOf(1, 2, 3, 4, 5)
    for (i in nums) {
        if (i >= 3) break   // 当 i >= 3 时跳出循环
        println(i)
    }
}
continue 语句

在循环语句中使用 continue 语句可以跳过本次循环,继续下一次循环的执行,例如:

fun main() {
    val nums = listOf(1, 2, 3, 4, 5)
    for (i in nums) {
        if (i == 3) continue   // 当 i == 3 时跳过本次循环
        println(i)
    }
}
标签

标签在 Kotlin 中用于标识代码块,通常用于在嵌套的循环或条件语句中使用 break 或 continue 跳出特定的代码块。

标签语法

我们可以使用关键字 label 表示标签,例如:

label@ for (i in 1..5) {
    for (j in 1..3) {
        println("i = $i, j = $j")
        if (i == 3 && j == 2) break@label   // 标记代码块并在 break 语句中使用标签
    }
}

在上面的例子中,我们使用 label@ 标记了外层循环的代码块,然后在内层循环中使用 break@label 跳出了标记的代码块。

标签限定符

在 Kotlin 中,我们还可以使用标签限定符指定需要跳出的循环或代码块,例如:

outer@ for (i in 1..5) {
    middle@ for (j in 1..3) {
        inner@ for (k in 1..4) {
            println("i = $i, j = $j, k = $k")
            if (i == 3 && j == 2 && k == 3) break@middle   // 在 break 语句中使用标签限定符
        }
    }
}

在上面的例子中,我们使用了三个标签 outer、middle 和 inner,然后在 break@middle 中使用了标签限定符,指定了需要跳出的中间循环。