Kotlin – 34 – Ranges in Kotlin

In Kotlin, a range is a fundamental construct that represents a sequence of values between two endpoints. Ranges are commonly used for defining loops, iterating over collections, and specifying a range of values in conditional statements. Kotlin provides several range-related features and syntax to work with ranges effectively. In this article, we will explore ranges in Kotlin, how to create them, work with different types of ranges, and their applications.

Creating Ranges

In Kotlin, you can create ranges using the .. operator. The basic syntax for creating a range is:


val range = startValue..endValue

Where startValue is the starting point of the range, and endValue is the ending point. Here’s an example of creating a range of integers:


val numbersRange = 1..5

In this example, numbersRange represents the integers from 1 to 5, inclusive.

Inclusive vs. Exclusive Ranges

Kotlin supports both inclusive and exclusive ranges. Inclusive ranges include both the start and end values, while exclusive ranges include the start value but exclude the end value. You can create an exclusive range using the until function. Here’s an example:


val inclusiveRange = 1..5 // Inclusive range [1, 2, 3, 4, 5]
val exclusiveRange = 1 until 5 // Exclusive range [1, 2, 3, 4]

In the above code, inclusiveRange includes both 1 and 5, while exclusiveRange includes 1 but excludes 5.

Iterating Over Ranges

Ranges are commonly used for iterating over a sequence of values. You can use a for loop to iterate through a range. Here’s an example:


val numbersRange = 1..5
for (number in numbersRange) {
    println(number)
}

This code will print the numbers 1 through 5, inclusive, one by one.

Checking Range Membership

You can check if a value is within a range using the in operator. It returns true if the value is within the specified range and false otherwise. Here’s an example:


val numbersRange = 1..5
val checkValue = 3
if (checkValue in numbersRange) {
    println("$checkValue is in the range.")
} else {
    println("$checkValue is not in the range.")
}

In this code, checkValue is 3, which is within the range of numbersRange, so it will print “3 is in the range.

Range Progression

Kotlin supports range progression, which allows you to specify a step or increment between values in a range. You can use the step function to create a ranged progression. Here’s an example:


val evenNumbersRange = 2..10 step 2 // Even numbers from 2 to 10 with a step of 2
for (number in evenNumbersRange) {
    println(number)
}

This code will print the even numbers from 2 to 10, inclusive, with a step of 2, resulting in “2 4 6 8 10“.

Reversed Ranges

You can also create reversed ranges using the downTo function. Reversed ranges allow you to iterate in reverse order. Here’s an example:


val reversedRange = 10 downTo 1 // Range from 10 to 1 in reverse order
for (number in reversedRange) {
    println(number)
}

This code will print the numbers from 10 down to 1, resulting in “10 9 8 7 6 5 4 3 2 1“.

Conclusion

Ranges are a fundamental concept in Kotlin that allow you to work with sequences of values, iterate over them, and check for membership. You can create both inclusive and exclusive ranges, specify range progression, and work with reversed ranges. Ranges are commonly used in loops, conditionals, and many other scenarios to simplify code and manage sequences of values effectively.