Package-level declarations

/docs/reference/ranges.html, Progressions and related top-level and extension functions.

Types

Link copied to clipboard

A progression of values of type Char.

Since Kotlin 1.0
Link copied to clipboard
class CharRange(start: Char, endInclusive: Char) : CharProgression, ClosedRange<Char>

A range of values of type Char.

Since Kotlin 1.0
Link copied to clipboard

Represents a range of floating point numbers. Extends ClosedRange interface providing custom operation lessThanOrEquals for comparing values of range domain type.

Since Kotlin 1.1
Link copied to clipboard
interface ClosedRange<T : Comparable<T>>

Represents a range of values (for example, numbers or characters). See the Kotlin language documentation for more information.

Since Kotlin 1.0
Link copied to clipboard
open class IntProgression : Iterable<Int>

A progression of values of type Int.

Since Kotlin 1.0
Link copied to clipboard
class IntRange(start: Int, endInclusive: Int) : IntProgression, ClosedRange<Int>

A range of values of type Int.

Since Kotlin 1.0
Link copied to clipboard

A progression of values of type Long.

Since Kotlin 1.0
Link copied to clipboard
class LongRange(start: Long, endInclusive: Long) : LongProgression, ClosedRange<Long>

A range of values of type Long.

Since Kotlin 1.0

Functions

Link copied to clipboard
fun <T : Comparable<T>> T.coerceAtLeast(minimumValue: T): T
fun Byte.coerceAtLeast(minimumValue: Byte): Byte
fun Double.coerceAtLeast(minimumValue: Double): Double
fun Float.coerceAtLeast(minimumValue: Float): Float
fun Int.coerceAtLeast(minimumValue: Int): Int
fun Long.coerceAtLeast(minimumValue: Long): Long
fun Short.coerceAtLeast(minimumValue: Short): Short

Ensures that this value is not less than the specified minimumValue.

Since Kotlin 1.0
Link copied to clipboard
fun <T : Comparable<T>> T.coerceAtMost(maximumValue: T): T
fun Byte.coerceAtMost(maximumValue: Byte): Byte
fun Double.coerceAtMost(maximumValue: Double): Double
fun Float.coerceAtMost(maximumValue: Float): Float
fun Int.coerceAtMost(maximumValue: Int): Int
fun Long.coerceAtMost(maximumValue: Long): Long
fun Short.coerceAtMost(maximumValue: Short): Short

Ensures that this value is not greater than the specified maximumValue.

Since Kotlin 1.0
Link copied to clipboard

Ensures that this value lies in the specified range.

Since Kotlin 1.1
fun <T : Comparable<T>> T.coerceIn(range: ClosedRange<T>): T

Ensures that this value lies in the specified range.

Since Kotlin 1.0
fun <T : Comparable<T>> T.coerceIn(minimumValue: T?, maximumValue: T?): T
fun Byte.coerceIn(minimumValue: Byte, maximumValue: Byte): Byte
fun Double.coerceIn(minimumValue: Double, maximumValue: Double): Double
fun Float.coerceIn(minimumValue: Float, maximumValue: Float): Float
fun Int.coerceIn(minimumValue: Int, maximumValue: Int): Int
fun Long.coerceIn(minimumValue: Long, maximumValue: Long): Long
fun Short.coerceIn(minimumValue: Short, maximumValue: Short): Short

Ensures that this value lies in the specified range minimumValue..maximumValue.

Since Kotlin 1.0
Link copied to clipboard
inline operator fun <T : Any, R : Iterable<T>, ClosedRange<T>> R.contains(element: T?): Boolean

Returns true if this iterable range contains the specified element.

Since Kotlin 1.3
inline operator fun CharRange.contains(element: Char?): Boolean
inline operator fun IntRange.contains(element: Int?): Boolean
inline operator fun LongRange.contains(element: Long?): Boolean

Returns true if this range contains the specified element.

Since Kotlin 1.3
@JvmName(name = "byteRangeContains")
operator fun ClosedRange<Byte>.contains(value: Double): Boolean
@JvmName(name = "byteRangeContains")
operator fun ClosedRange<Byte>.contains(value: Float): Boolean
@JvmName(name = "byteRangeContains")
operator fun ClosedRange<Byte>.contains(value: Int): Boolean
@JvmName(name = "byteRangeContains")
operator fun ClosedRange<Byte>.contains(value: Long): Boolean
@JvmName(name = "byteRangeContains")
operator fun ClosedRange<Byte>.contains(value: Short): Boolean
@JvmName(name = "doubleRangeContains")
operator fun ClosedRange<Double>.contains(value: Byte): Boolean
@JvmName(name = "doubleRangeContains")
operator fun ClosedRange<Double>.contains(value: Float): Boolean
@JvmName(name = "doubleRangeContains")
operator fun ClosedRange<Double>.contains(value: Int): Boolean
@JvmName(name = "doubleRangeContains")
operator fun ClosedRange<Double>.contains(value: Long): Boolean
@JvmName(name = "doubleRangeContains")
operator fun ClosedRange<Double>.contains(value: Short): Boolean
@JvmName(name = "floatRangeContains")
operator fun ClosedRange<Float>.contains(value: Byte): Boolean
@JvmName(name = "floatRangeContains")
operator fun ClosedRange<Float>.contains(value: Double): Boolean
@JvmName(name = "floatRangeContains")
operator fun ClosedRange<Float>.contains(value: Int): Boolean
@JvmName(name = "floatRangeContains")
operator fun ClosedRange<Float>.contains(value: Long): Boolean
@JvmName(name = "floatRangeContains")
operator fun ClosedRange<Float>.contains(value: Short): Boolean
@JvmName(name = "intRangeContains")
operator fun ClosedRange<Int>.contains(value: Byte): Boolean
@JvmName(name = "intRangeContains")
operator fun ClosedRange<Int>.contains(value: Double): Boolean
@JvmName(name = "intRangeContains")
operator fun ClosedRange<Int>.contains(value: Float): Boolean
@JvmName(name = "intRangeContains")
operator fun ClosedRange<Int>.contains(value: Long): Boolean
@JvmName(name = "intRangeContains")
operator fun ClosedRange<Int>.contains(value: Short): Boolean
@JvmName(name = "longRangeContains")
operator fun ClosedRange<Long>.contains(value: Byte): Boolean
@JvmName(name = "longRangeContains")
operator fun ClosedRange<Long>.contains(value: Double): Boolean
@JvmName(name = "longRangeContains")
operator fun ClosedRange<Long>.contains(value: Float): Boolean
@JvmName(name = "longRangeContains")
operator fun ClosedRange<Long>.contains(value: Int): Boolean
@JvmName(name = "longRangeContains")
operator fun ClosedRange<Long>.contains(value: Short): Boolean
@JvmName(name = "shortRangeContains")
operator fun ClosedRange<Short>.contains(value: Byte): Boolean
@JvmName(name = "shortRangeContains")
operator fun ClosedRange<Short>.contains(value: Double): Boolean
@JvmName(name = "shortRangeContains")
operator fun ClosedRange<Short>.contains(value: Float): Boolean
@JvmName(name = "shortRangeContains")
operator fun ClosedRange<Short>.contains(value: Int): Boolean
@JvmName(name = "shortRangeContains")
operator fun ClosedRange<Short>.contains(value: Long): Boolean

Checks if the specified value belongs to this range.

Since Kotlin 1.0
Link copied to clipboard
infix fun Byte.downTo(to: Byte): IntProgression
infix fun Byte.downTo(to: Int): IntProgression
infix fun Int.downTo(to: Byte): IntProgression
infix fun Int.downTo(to: Int): IntProgression
infix fun Int.downTo(to: Long): LongProgression
infix fun Int.downTo(to: Short): IntProgression
infix fun Long.downTo(to: Int): LongProgression
infix fun Short.downTo(to: Int): IntProgression

Returns a progression from this value down to the specified to value with the step -1.

Since Kotlin 1.0
Link copied to clipboard
inline fun CharRange.random(): Char
inline fun IntRange.random(): Int
inline fun LongRange.random(): Long

Returns a random element from this range.

Since Kotlin 1.3
fun CharRange.random(random: Random): Char
fun IntRange.random(random: Random): Int
fun LongRange.random(random: Random): Long

Returns a random element from this range using the specified source of randomness.

Since Kotlin 1.3
Link copied to clipboard
inline fun CharRange.randomOrNull(): Char?
inline fun IntRange.randomOrNull(): Int?
inline fun LongRange.randomOrNull(): Long?

Returns a random element from this range, or null if this range is empty.

Since Kotlin 1.4

Returns a random element from this range using the specified source of randomness, or null if this range is empty.

Since Kotlin 1.4
Link copied to clipboard
operator fun <T : Comparable<T>> T.rangeTo(that: T): ClosedRange<T>

Creates a range from this Comparable value to the specified that value.

Since Kotlin 1.0

Creates a range from this Double value to the specified that value.

Since Kotlin 1.1

Creates a range from this Float value to the specified that value.

Since Kotlin 1.1
Link copied to clipboard

Returns a progression that goes over the same range in the opposite direction with the same step.

Since Kotlin 1.0
Link copied to clipboard

Returns a progression that goes over the same range with the given step.

Since Kotlin 1.0
Link copied to clipboard
infix fun Byte.until(to: Byte): IntRange
infix fun Byte.until(to: Int): IntRange
infix fun Byte.until(to: Long): LongRange
infix fun Byte.until(to: Short): IntRange
infix fun Char.until(to: Char): CharRange
infix fun Int.until(to: Byte): IntRange
infix fun Int.until(to: Int): IntRange
infix fun Int.until(to: Long): LongRange
infix fun Int.until(to: Short): IntRange
infix fun Long.until(to: Byte): LongRange
infix fun Long.until(to: Int): LongRange
infix fun Long.until(to: Long): LongRange
infix fun Long.until(to: Short): LongRange
infix fun Short.until(to: Byte): IntRange
infix fun Short.until(to: Int): IntRange
infix fun Short.until(to: Long): LongRange
infix fun Short.until(to: Short): IntRange

Returns a range from this value up to but excluding the specified to value.

Since Kotlin 1.0