官术网_书友最值得收藏!

The for loop

The classic Java for loop, where we need to define the iterator explicitly, is not present in Kotlin. Here is an example of this kind of loop in Java:

    //Java 
    String str = "Foo Bar"; 
    for(int i=0; i<str.length(); i++) 
    System.out.println(str.charAt(i)); 

To iterate through a collection of items from start to finish, we can simply use the for loop instead:

    var array = arrayOf(1, 2, 3) 
 
    for (item in array) { 
        print(item) 
    } 

It can also be defined without a block body:

    for (item in array) 
        print(item) 

If a collection is a generic collection, then item will be smart cast to a type corresponding to a generic collection type. In other words, if a collection contains elements of type Int, the item will be smart cast to Int:

    var array = arrayOf(1, 2, 3) 
 
    for (item in array) 
        print(item) // item is Int 

We can also iterate through the collection using its index:

    for (i in array.indices) 
        print(array[i]) 

The array.indices param returns IntRange with all indexes. It is the equivalent of (1.. array.length - 1). There is also an alternative withIndex library method that returns a list of the IndexedValue property, which contains an index and a value. This can be deconstructed into these elements this way:

    for ((index, value) in array.withIndex()) { 
        println("Element at $index is $value") 
    } 

The construct (index, value) is known as a destructive declaration, and we will discuss it in Chapter 4, Classes and Objects.

主站蜘蛛池模板: 阿图什市| 三台县| 酉阳| 庐江县| 平舆县| 郴州市| 彝良县| 两当县| 通海县| 若羌县| 高陵县| 北碚区| 赫章县| 乃东县| 仁寿县| 都匀市| 林口县| 永登县| 威海市| 兴海县| 蓬溪县| 兴化市| 万全县| 贵港市| 忻城县| 滕州市| 曲阳县| 常山县| 崇左市| 通海县| 孟村| 溧水县| 宣汉县| 离岛区| 调兵山市| 高密市| 蓬安县| 永城市| 太白县| 中山市| 石棉县|