📜  Kotlin-控制流

📅  最后修改于: 2020-12-30 07:01:47             🧑  作者: Mango


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

如果别的

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

fun main(args: Array) {
   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)
 
   // As expression 
   // val max = if (a > b) a else b
}

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

Maximum of a or b is 5

何时使用

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

fun main(args: Array) {
   val x:Int = 5
   when (x) {
      1 -> print("x = = 1")
      2 -> print("x = = 2")
      
      else -> { // Note the block
         print("x is neither 1 nor 2")
      }
   }
}

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

x is neither 1 nor 2

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

fun main(args: Array) {
   val x:Int = 5
   when (x) {
      1,2 -> print(" Value of X either 1,2")
      
      else -> { // Note the block
         print("x is neither 1 nor 2")
      }
   }
}

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

x is neither 1 nor 2

对于循环

循环就是这样的发明,它提供了遍历任何类型的数据结构的灵活性。与其他编程语言一样,Kotlin也提供了多种循环方法,但是,其中“ For”是最成功的一种。 For循环的实现和使用在概念上类似于Java for循环。以下示例说明了如何在实际示例中使用它们。

fun main(args: Array) {
   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) {
   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) {
   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) {
   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

使用返回,中断,继续

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

返回-返回是一个关键字返回某个值从调用函数调用函数。在以下示例中,我们将使用Kotlin编码基础实现此方案。

fun main(args: Array) {
   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

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

fun main(args: Array) {
   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,它开始后,如果块一旦达到break语句,整个控制流程终止程序执行执行。