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

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.

主站蜘蛛池模板: 辽宁省| 泰和县| 古交市| 新乐市| 盘山县| 蓬莱市| 义马市| 民勤县| 育儿| 金昌市| 凉城县| 陆川县| 常德市| 图木舒克市| 恭城| 浦县| 沂水县| 丽水市| 武清区| 东乌珠穆沁旗| 察哈| 舟山市| 桃园市| 宜春市| 拉孜县| 永兴县| 太谷县| 都昌县| 乐业县| 名山县| 聂拉木县| 乡宁县| 合肥市| 七台河市| 崇阳县| 渝中区| 开平市| 屯昌县| 林州市| 尉氏县| 虎林市|