Standard Library Utilities
Coerce and Compare
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
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")
}
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
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
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