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

Ranges

A range is a way to define a sequence of values. It is denoted by the first and last value in the sequence. We can use ranges to store weights, temperatures, time, and age. A range is defined using double dot notation (under the hood, a range uses the rangeTo operator):

    val intRange = 1..4 // 1 
    val charRange= 'b'..'g' // 2 
  1. Inferred type is IntRange (equivalent of i >= 1 && i <= 4).
  2. Inferred type is CharRange (equivalent of letters from 'b' to 'g').
Notice that we are using single quotes to define the character range.

The Int, Long, and Char type ranges can be used to iterate over next values in the for... each loop:

    for (i in 1..5) print(i) // Prints: 1234 
    for (i in 'b'..'g') print(i) // Prints: bcdefg 

Ranges can be used to check a value is bigger than a start value and smaller than an end value:

    val weight = 52 
    val healthy = 50..75 
 
    if (weight in healthy) 
        println("$weight is in $healthy range") 
//Prints: 52 is in 50..75 range

It can be also used this way for other types of range, such as CharRange:

    val c = 'k'      // Inferred type is Char
    val alphabet = 'a'..'z'  
 
    if(c in alphabet) 
        println("$c is character") //Prints: k is a character 

In Kotlin, ranges are closed (end inclusive). This means that the range ending value is included in the range:

    for (i in 1..1) print(i) // Prints: 123

Note that ranges in Kotlin are incremental by default (a step is equal to 1 by default):

    for (i in 5..1) print(i) // Prints nothing 

To iterate in reverse order, we must use a downTo function, which sets a step to -1, as in this example:

    for (i in 5 downTo 1) print(i) // Prints: 54321 

We can also set different steps:

    for (i in 3..6 step 2) print(i) // Prints: 35 

Notice that in the 3..6 range, the last element was not printed. This is because the stepping index moves two steps in each of the loop iterations. So in the first iteration, it has a value of 3, in the second iteration a value of 5, and finally in a third iteration the value would be 7, so it is ignored, because it is outside the range.

A step defined by the step function must be positive. If we want to define a negative step, then we should use the downTo function together with the step function:

    for (i in 9 downTo 1 step 3) print(i) // Prints: 963 
主站蜘蛛池模板: 星子县| 米易县| 东明县| 东宁县| 晋城| 稻城县| 桂东县| 榆树市| 尼勒克县| 荃湾区| 林芝县| 罗定市| 龙岩市| 汝城县| 循化| 武冈市| 南通市| 德江县| 宝清县| 乡城县| 长岛县| 大荔县| 邢台县| 讷河市| 乌兰察布市| 甘肃省| 泽普县| 西和县| 乌恰县| 郁南县| 焦作市| 九江市| 濉溪县| 平潭县| 屏南县| 青海省| 福泉市| 内江市| 康定县| 兴安县| 霍山县|