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

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 
主站蜘蛛池模板: 许昌县| 潜江市| 东乌| 文水县| 长垣县| 金门县| 内黄县| 樟树市| 方正县| 扎鲁特旗| 文安县| 久治县| 梓潼县| 珠海市| 苏尼特右旗| 五常市| 水富县| 建德市| 定南县| 阳泉市| 措勤县| 朝阳市| 桂林市| 会同县| 安平县| 建阳市| 云龙县| 漳平市| 河池市| 岫岩| 隆尧县| 宁海县| 巴南区| 勃利县| 湖北省| 南部县| 疏勒县| 克山县| 连云港市| 宁国市| 东乡|