Kotlin 控制流程


在上一章中,我们了解了 Kotlin 系统中可用的不同类型的数据类型。在本章中,我们将讨论 Kotlin 中可用的不同类型的控制流机制。

If - Else


Kotlin 是一种函数式语言,因此就像 Kotlin 中的所有函数式语言一样“if”是一个表达式,它不是一个关键字。表达方式“if”将在必要时返回一个值。和其他编程语言一样,“if-else”块用作初始条件检查运算符。在下面的示例中,我们将比较两个变量并相应地提供所需的输出。

fun main(args: Array<String>) {
    val a:Int = 5
    val b:Int = 2
    var max: Int
   
    if (a > b) {
        max = a
    } else {
        max = b
    }
    print("Maximum of a or b is " +max)
 
    // 作为表达式
    // val max = if (a > b) a else b
}

上面这段代码在浏览器中产生了以下输出。我们的示例还包含另一行代码,它描述了如何使用“If”语句作为表达式。

Maximum of a or b is 5

When


如果你熟悉其他编程语言,那么你可能听说过 switch 语句这个术语,它基本上是一个条件运算符,当多个条件可以应用于特定变量时。“when”运算符根据分支条件匹配变量值。如果它满足分支条件,那么它将在该范围内执行该语句。在下面的例子中,我们将更多地了解 Kotlin 中的“when”。

fun main(args: Array<String>) {
    val x:Int = 5
    when (x) {
        1 -> print("x = = 1")
        2 -> print("x = = 2")
      
        else -> { // 注意块
            print("x is neither 1 nor 2")
        }
    }
}

上面的代码在浏览器中产生以下输出。

x is neither 1 nor 2

在上面的例子中,Kotlin 编译器匹配的值x与给定的分支。如果它不匹配任何分支,那么它将执行 else 部分。实际上,when 相当于多个 if 块。 Kotlin 为开发人员提供了另一种灵活性,开发人员可以通过在检查中提供“,”来在同一行中提供多个检查。让我们修改上面的例子如下。

fun main(args: Array<String>) {
    val x:Int = 5
    when (x) {
        1,2 -> print(" Value of X either 1,2")
      
        else -> { // 注意块
            print("x is neither 1 nor 2")
        }
    }
}

在浏览器中运行相同的,这将在浏览器中产生以下输出。

x is neither 1 nor 2

For 循环


循环就是这样一种发明,它提供了迭代任何类型数据结构的灵活性。与其他编程语言一样,Kotlin 也提供了多种 Looping 方法,然而,其中“For”是最成功的。 For 循环的实现和使用在概念上类似于 Java for 循环。下面的例子展示了我们如何在现实生活中使用相同的例子。

fun main(args: Array<String>) {
    val items = listOf(1, 2, 3, 4)
    for (i in items) println("values of the array"+i)
}

在上面的一段代码中,我们声明了一个名为“items”的列表,并使用 for 循环遍历该定义的列表并在浏览器中打印其值。以下是输出。

values of the array1
values of the array2
values of the array3
values of the array4

以下是另一个代码示例,其中我们使用了一些库函数来使我们的开发工作比以往任何时候都更容易。

fun main(args: Array<String>) {
    val items = listOf(1, 22, 83, 4)
   
    for ((index, value) in items.withIndex()) {
        println("the element at $index is $value")
    }
}

一旦我们在我们的编码环境中编译并执行上述代码段,它将在浏览器中产生以下输出。

the element at 0 is 1
the element at 1 is 22
the element at 2 is 83
the element at 3 is 4

While 循环和 Do-While 循环


While 和 Do-While 的工作方式与它们在其他编程语言中的工作方式完全相似。这两个循环之间的唯一区别是,在 Do-while 循环的情况下,将在循环结束时测试条件。下面的例子展示了while 循环.

fun main(args: Array<String>) {
    var x:Int = 0
    println("例子 of While Loop--")
   
    while(x< = 10) {
        println(x)
        x++
    }
}

上面的代码在浏览器中产生以下输出。

例子 of While Loop--
0
1
2
3
4
5
6
7
8
9
10

Kotlin 还有一个叫做 Do-While 循环的循环,循环体会被执行一次,然后才会检查条件。下面的例子展示了Do-while 循环.

fun main(args: Array<String>) {
    var x:Int = 0
    do {
        x = x + 10
        println("I am inside Do block---"+x)
    } while(x <= 50)
}

上面的代码在浏览器中产生以下输出。在上面的代码中,Kotlin 编译器将执行 DO 块,然后在 while 块中进行条件检查。

I am inside Do block---10
I am inside Do block---20
I am inside Do block---30
I am inside Do block---40
I am inside Do block---50
I am inside Do block---60

Return、Break、Continue 的使用


如果你熟悉任何编程语言,那么你必须了解不同的关键字,这些关键字可以帮助我们在应用程序中实现良好的控制流。以下是可用于控制循环或任何其他类型的控制流的不同关键字。

Return: return 是一个关键字,从被调用函数返回一些值给调用函数。在以下示例中,我们将使用 Kotlin 编码基础来实现此场景。

fun main(args: Array<String>) {
    var x:Int = 10
    println("The value of X is--"+doubleMe(x))
}
fun doubleMe(x:Int):Int {
    return 2*x;
}

在上面的一段代码中,我们调用另一个函数并将输入乘以 2,并将结果值返回给被调用的函数,即我们的主函数。 Kotlin 以不同的方式定义函数,我们将在后续章节中介绍。现在,了解上面的代码将在浏览器中生成以下输出就足够了。

The value of X is--20

Continue 和 Break: continue 和 break 是逻辑题中最关键的部分。如果某些条件失败,则“break”关键字终止控制器流程,而“continue”则相反。所有这些操作都是即时可见的。 Kotlin 比其他编程语言更智能,其中开发人员可以应用多个标签作为可见性。下面的一段代码展示了我们如何在 Kotlin 中实现这个标签。

fun main(args: Array<String>) {
    println("例子 of Break and Continue")
    myLabel@ for(x in 1..10) { // 应用自定义标签
        if(x = = 5) {
            println("I am inside if block with value"+x+"\n-- hence it will close the operation")
            break@myLabel // 指定标签
        } else {
            println("I am inside else block with value"+x)
            continue@myLabel
        }
    }
}

上面的代码在浏览器中产生以下输出。

例子 of Break and Continue
I am inside else block with value1
I am inside else block with value2
I am inside else block with value3
I am inside else block with value4
I am inside if block with value5
-- hence it will close the operation

如你所见,控制器继续循环,直到并且除非x是 5. 一旦值为x到达 5,它开始执行 if 块,一旦到达 break 语句,整个控制流程将终止程序执行。