coerceIn

fun <T : Comparable<T>> T.coerceIn(minimumValue: T?, maximumValue: T?): T

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

Return

this value if it's in the range, or minimumValue if this value is less than minimumValue, or maximumValue if this value is greater than maximumValue.

Samples

import samples.*
import java.time.DayOfWeek
import kotlin.test.assertFailsWith
fun main() { 
   //sampleStart 
   val workingDays = DayOfWeek.MONDAY..DayOfWeek.FRIDAY
assertPrints(DayOfWeek.WEDNESDAY.coerceIn(workingDays), "WEDNESDAY")
assertPrints(DayOfWeek.SATURDAY.coerceIn(workingDays), "FRIDAY")

assertPrints(DayOfWeek.FRIDAY.coerceIn(DayOfWeek.SATURDAY, DayOfWeek.SUNDAY), "SATURDAY") 
   //sampleEnd
}

fun Byte.coerceIn(minimumValue: Byte, maximumValue: Byte): Byte
fun Short.coerceIn(minimumValue: Short, maximumValue: Short): Short
fun Int.coerceIn(minimumValue: Int, maximumValue: Int): Int
fun Long.coerceIn(minimumValue: Long, maximumValue: Long): Long
fun Float.coerceIn(minimumValue: Float, maximumValue: Float): Float
fun Double.coerceIn(minimumValue: Double, maximumValue: Double): Double

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

Return

this value if it's in the range, or minimumValue if this value is less than minimumValue, or maximumValue if this value is greater than maximumValue.

Samples

import samples.*
import java.time.DayOfWeek
import kotlin.test.assertFailsWith
fun main() { 
   //sampleStart 
   assertPrints(10.coerceIn(1, 100), "10")
assertPrints(10.coerceIn(1..100), "10")
assertPrints(0.coerceIn(1, 100), "1")
assertPrints(500.coerceIn(1, 100), "100")
assertFailsWith<IllegalArgumentException> {
    10.coerceIn(100, 0)
} 
   //sampleEnd
}

fun <T : Comparable<T>> T.coerceIn(range: ClosedFloatingPointRange<T>): T

Ensures that this value lies in the specified range.

Return

this value if it's in the range, or range.start if this value is less than range.start, or range.endInclusive if this value is greater than range.endInclusive.

Since Kotlin

1.1

Samples

import samples.*
import java.time.DayOfWeek
import kotlin.test.assertFailsWith
fun main() { 
   //sampleStart 
   assertPrints(10.1.coerceIn(1.0..10.0), "10.0")
assertPrints(9.9.coerceIn(1.0..10.0), "9.9")

assertFailsWith<IllegalArgumentException> { 9.9.coerceIn(1.0..Double.NaN) } 
   //sampleEnd
}

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

Ensures that this value lies in the specified range.

Return

this value if it's in the range, or range.start if this value is less than range.start, or range.endInclusive if this value is greater than range.endInclusive.

Samples

import samples.*
import java.time.DayOfWeek
import kotlin.test.assertFailsWith
fun main() { 
   //sampleStart 
   val workingDays = DayOfWeek.MONDAY..DayOfWeek.FRIDAY
assertPrints(DayOfWeek.WEDNESDAY.coerceIn(workingDays), "WEDNESDAY")
assertPrints(DayOfWeek.SATURDAY.coerceIn(workingDays), "FRIDAY")

assertPrints(DayOfWeek.FRIDAY.coerceIn(DayOfWeek.SATURDAY, DayOfWeek.SUNDAY), "SATURDAY") 
   //sampleEnd
}

fun Int.coerceIn(range: ClosedRange<Int>): Int
fun Long.coerceIn(range: ClosedRange<Long>): Long

Ensures that this value lies in the specified range.

Return

this value if it's in the range, or range.start if this value is less than range.start, or range.endInclusive if this value is greater than range.endInclusive.

Samples

import samples.*
import java.time.DayOfWeek
import kotlin.test.assertFailsWith
fun main() { 
   //sampleStart 
   assertPrints(10.coerceIn(1, 100), "10")
assertPrints(10.coerceIn(1..100), "10")
assertPrints(0.coerceIn(1, 100), "1")
assertPrints(500.coerceIn(1, 100), "100")
assertFailsWith<IllegalArgumentException> {
    10.coerceIn(100, 0)
} 
   //sampleEnd
}

fun UInt.coerceIn(minimumValue: UInt, maximumValue: UInt): UInt
fun ULong.coerceIn(minimumValue: ULong, maximumValue: ULong): ULong
fun UByte.coerceIn(minimumValue: UByte, maximumValue: UByte): UByte
fun UShort.coerceIn(minimumValue: UShort, maximumValue: UShort): UShort

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

Return

this value if it's in the range, or minimumValue if this value is less than minimumValue, or maximumValue if this value is greater than maximumValue.

Since Kotlin

1.5

Samples

import samples.*
import java.time.DayOfWeek
import kotlin.test.assertFailsWith
fun main() { 
   //sampleStart 
   assertPrints(10u.coerceIn(1u, 100u), "10")
assertPrints(10u.coerceIn(1u..100u), "10")
assertPrints(0u.coerceIn(1u, 100u), "1")
assertPrints(500u.coerceIn(1u, 100u), "100")
assertFailsWith<IllegalArgumentException> {
    10u.coerceIn(100u, 0u)
} 
   //sampleEnd
}

fun UInt.coerceIn(range: ClosedRange<UInt>): UInt
fun ULong.coerceIn(range: ClosedRange<ULong>): ULong

Ensures that this value lies in the specified range.

Return

this value if it's in the range, or range.start if this value is less than range.start, or range.endInclusive if this value is greater than range.endInclusive.

Since Kotlin

1.5

Samples

import samples.*
import java.time.DayOfWeek
import kotlin.test.assertFailsWith
fun main() { 
   //sampleStart 
   assertPrints(10u.coerceIn(1u, 100u), "10")
assertPrints(10u.coerceIn(1u..100u), "10")
assertPrints(0u.coerceIn(1u, 100u), "1")
assertPrints(500u.coerceIn(1u, 100u), "100")
assertFailsWith<IllegalArgumentException> {
    10u.coerceIn(100u, 0u)
} 
   //sampleEnd
}