Kotlin------流程控制语句

来源:互联网 发布:之二虫又何知翻译 编辑:程序博客网 时间:2024/05/16 07:31

流程控制语句是编程语言中的核心之一。可分为:

分支语句(ifwhen)

循环语句(forwhile )和

跳转语句 (returnbreakcontinuethrow)等。

 if表达式

f-else语句是控制程序流程的最基本的形式,其中else是可选的。

在 Kotlin 中,if 是一个表达式,即它会返回一个值(跟Scala一样)。

代码示例:

/** * Created by jack on 2017/6/9. */fun main(args: Array<String>) {    println(max(1, 2))}fun max(a: Int, b: Int): Int {// 作为表达式    val max = if (a > b) a else b    return max //  return if (a > b) a else b}fun max1(a: Int, b: Int): Int {    // 传统用法    var max1 = a    if (a < b) max1 = b    return max1}fun max2(a: Int, b: Int): Int {// With else    var max2: Int    if (a > b) {        max2 = a    } else {        max2 = b    }    return max2}
另外,if 的分支可以是代码块,最后的表达式作为该块的值:

fun max3(a: Int, b: Int): Int {    val max = if (a > b) {        print("Max is a")        a    } else {        print("Max is b")        b    }    return max}

if作为代码块时,最后一行为其返回值。

另外,在Kotlin中没有类似true? 1: 0这样的三元表达式。对应的写法是使用if else语句:

if(true) 1 else 0

when表达式

Kotlin中的When和If一样,既可以作为语句,也可以作为表达式,在作为语句时,它相当于Java中的switch。下面是对传入的参数input做一个判断

fun useWhen(input: Int) {    var result = when (input) {        //判断input是否为1        1 -> println("input == 1")        //判断input是否为2        2 -> {            println("input == 2")        }        //input是否在10到20的范围内        in 10..20 -> println("input number in the range")        //input是否不在20到30的范围内        !in 20..30 -> println("input number outside the range")        else -> { //When作为表达式使用时,最后一定要以else            println("input: $input")        }    }    println("result: $result")}

从上面的代码看,你会发现它比Java的switch灵活多了。这里只是使用When语句,如果要使用When表达式,则应该If表达式一样,最终一定要以else结尾。

for循环

for循环能够对任何提供迭代器(iterator)的对象进行遍历,语法格式如下:

for (item in collection){    //代码块    ...}
和Java有区别,但是也非常简单,Kotlin中的for更类似Java中的增强for循环。

fun useFor() {    val students: Array<String> = arrayOf("小主", "小超", "小七")    for (student in students) {//输出学生名字        println("student: $student")    }    for ((index, student) in students.withIndex()) {//输出学生的下标和名字        println("the element at $index is $student")    }}

While循环

Kotlin中的white(){}和do{}while()和Java差不多,这里不多做赘述。

fun userWhile() {    var counter = 10    while (counter > 0) {        counter--        println("counter: $counter")    }    do {        counter++        println("counter: $counter")    } while (counter < 10)}

返回和跳转

Kotlin和Java一样有下面三种跳转表达式

  • continue:跳过这一次循环
  • break:终止包裹它的循环
  • return:从包裹它的函数或者匿名函数中返回

以上三种跳转都支持跳转到指定的标签处。标签的使用方式也简单,使用@在对应的循环或者匿名函数做标记即可,就像下方的示例代码一样

/** * 跳除循环和退出 */fun showType3(){    loop@ for (i in 1..11){        if (i==2){            continue@loop        }        if (i== 5){            break@loop         }        println(i)    }}