Use numeric helpers to clamp a value and compare it to a target.

coerce `coerceIn`, `minOf`, and `maxOf` keep numeric boundary code concise.

Coerce and Compare

request
CoerceAndCompare.kt
Replay: real traced execution (multi-file project)
fun main() {
    val request = 12
    val clamped = request.coerceIn(0, 10)
    val lower = minOf(clamped, 4)
    val upper = maxOf(clamped, 4)

    println("request=$request")
    println("clamped=$clamped")
    println("lower=$lower")
    println("upper=$upper")
}
fun main() {
    val request = -2
    val clamped = request.coerceIn(0, 10)
    val lower = minOf(clamped, 4)
    val upper = maxOf(clamped, 4)

    println("request=$request")
    println("clamped=$clamped")
    println("lower=$lower")
    println("upper=$upper")
}
fun main() {
    val request = 5
    val clamped = request.coerceIn(0, 10)
    val lower = minOf(clamped, 4)
    val upper = maxOf(clamped, 4)

    println("request=$request")
    println("clamped=$clamped")
    println("lower=$lower")
    println("upper=$upper")
}
  1. request ← 12, clamped ← 10, lower ← 4, upper ← 10

    1fun main() {2    val request→ 12 = 12 //@request=-2, 53    val clamped→ 10 = request12.coerceIn(0, 10)4    val lower→ 4 = minOf(clamped10, 4)5    val upper→ 10 = maxOf(clamped10, 4)67    println("request=$request12")8    println("clamped=$clamped10")9    println("lower=$lower4")10    println("upper=$upper10")11}
    outputrequest=12
    clamped=10
    lower=4
    upper=10
  1. request ← -2, clamped ← 0, lower ← 0, upper ← 4

    1fun main() {2    val request→ -2 = -23    val clamped→ 0 = request-2.coerceIn(0, 10)4    val lower→ 0 = minOf(clamped0, 4)5    val upper→ 4 = maxOf(clamped0, 4)67    println("request=$request-2")8    println("clamped=$clamped0")9    println("lower=$lower0")10    println("upper=$upper4")11}
    outputrequest=-2
    clamped=0
    lower=0
    upper=4
  1. request ← 5, clamped ← 5, lower ← 4, upper ← 5

    1fun main() {2    val request→ 5 = 53    val clamped→ 5 = request5.coerceIn(0, 10)4    val lower→ 4 = minOf(clamped5, 4)5    val upper→ 5 = maxOf(clamped5, 4)67    println("request=$request5")8    println("clamped=$clamped5")9    println("lower=$lower4")10    println("upper=$upper5")11}
    outputrequest=5
    clamped=5
    lower=4
    upper=5