Kotlin------流程控制語句

流程控制語句是編程語言中的核心之一。可分爲:編程

分支語句(ifwhen)編程語言

循環語句(forwhile )和ide

跳轉語句 (returnbreakcontinuethrow)等。函數

 if表達式

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

在 Kotlin 中,if 是一個表達式,即它會返回一個值(跟Scala同樣)。spa

代碼示例:code

/**
 * 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做爲代碼塊時,最後一行爲其返回值。blog

另外,在Kotlin中沒有相似true? 1: 0這樣的三元表達式。對應的寫法是使用if else語句:element

 
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) }}
相關文章
相關標籤/搜索