Kotlin系列之迴圈

weixin_33830216發表於2018-01-16

今天說說Kotlin中的迴圈迭代的內容。

我們這裡還是對比Java來學習Kotlin中的迴圈迭代的寫法。

Java中的迴圈

Java中的迴圈主要包括while()、do{}while()、for和foreach這幾種方式,放上程式碼簡單複習一下,便於與後面的Kotlin程式碼對比。

Java程式碼

public class JavaLoop {
    public static void main(String[] args) {

        int[] data = {1, 2, 3, 4, 5, 6};

        //while迴圈
        int index = 0;
        int len = data.length;
        while (index < len){
            System.out.println(data[index++]);
        }

        //do...while迴圈
        int sum = 0;
        do{
            System.out.println(sum);
            sum += 1;
        }while (sum < 100);

        //for迴圈
        for (int i = 0; i < len; i++){
            System.out.println(data[i]);
        }

        //foreach迴圈
        for(int da : data){
            System.out.println(da);
        }
    }
}
複製程式碼

上面的只是通過簡單的程式碼複習了下Java中迴圈的寫法,下面關鍵看看Kotlin中的迴圈。

Kotlin中的迴圈

Kotlin中的while迴圈和do...while迴圈與Java中的寫法是一樣的,這裡不再重複,我們只要說說Kotlin的新特性。 在Kotlin中沒有一般意義的for迴圈結構,就想下面這種。

//for迴圈
for (int i = 0; i < len; i++){
    System.out.println(data[i]);
}
複製程式碼

這種結構在Kotlin中是沒有的,Kotlin中引入了一個新的概念區間。其實這個概念我們在數學中是學過的。 在Kotlin中使用m..n這種形式來表示一個m到n的閉區間,然後又使用in來表示每次從區間裡面取一個值,放上程式碼。

Kotlin程式碼

fun main(args: Array<String>){
    for (i in 1..100){
        print(i)
    }
}
複製程式碼

上面的程式碼列印出1-100之間的數字,包括1和100。 當然你可能還想每次不是遞增1,那就設定step步長好了,如下列印出1-100之間的所有奇數。

fun main(args: Array<String>){
    for (i in 1..100 step 2){
        print(i)
    }
}
複製程式碼

你可能還想倒著輸出1-100之間的所有數,那也可以。

for (i in 100 downTo 1 step 1){
    print(i);
}
複製程式碼

100 downTo 1表示從100減小到1,step仍然表示步長。 當然for迴圈不止可以迭代數字,我們知道在Java中可以使用迴圈輸出連續的字元,這其實是利用了ASCII碼來做到的,就像下這樣。

Java程式碼

for (char i = 'A'; i <= 'Z'; i++){
    System.out.print(i);
}
複製程式碼

在Kotlin中我們不但可以寫一個數字區間,也可以寫一個字元區間,實現與上面的Java程式碼一樣的功能,就像下面一樣。

for(c in 'A'..'Z'){
    print(c)
}
複製程式碼

寫在最後

是不是發現Kotlin中的迴圈更加簡潔,而且語意更加清晰,而且Kotlin的for迴圈可以實現一般的for迴圈的所有功能。

相關文章