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
    }
    
    尝试一下
    输出:
    
    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 = 1
       when (x) {
          1,2 -> print(" Value of X either 1,2")
          
          else -> { // Note the block
             print("x is neither 1 nor 2")
          }
       }
    }
    
    尝试一下
    输出:
    
    Value of X either 1,2
    
  • for 循环

    循环就是这样一种发明,它提供了通过任何类型的数据结构进行迭代的灵活性。与其他编程语言一样,Kotlin也提供了多种循环方法,但是其中“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("Example of While Loop--")
       
       while(x< = 10) {
          println(x)
          x++
       } 
    }
    
    尝试一下
    输出:
    
    Example 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)
    }
    
    尝试一下
    输出:
    
    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
    
    continuebreak -continuebreak是逻辑问题中最重要的部分。如果某些条件失败,则“break”关键字将终止控制器流,而“continue”则相反。所有这些操作都会立即可见。Kotlin比其他编程语言更智能,其中开发人员可以应用多个标签作为可见性。以下代码展示了我们如何在Kotlin中实现此标签。
    
    fun main(args: Array<String>) {
       println("Example of Break and Continue")
       myLabel@ for(x in 1..10) { // appling the custom label
          if(x == 5) {
             println("I am inside if block with value"+x+"\n-- hence it will close the operation")
             break@myLabel //specifing the label
          } else {
             println("I am inside else block with value"+x)
             continue@myLabel
          }
       }
    }
    
    尝试一下
    输出
    
    Example 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语句,整个控制流就终止程序的执行。