Control Flow
Ranges
Use an inclusive range to check membership.
range
The `..` operator builds an inclusive range.
Ranges
Ranges.kt
Replay: real traced execution (multi-file project)
fun main() {
val value = 4
val range = 1..5
val inside = value in range
val label = if (inside) "inside" else "outside"
println("value=$value")
println("label=$label")
}
fun main() {
val value = 0
val range = 1..5
val inside = value in range
val label = if (inside) "inside" else "outside"
println("value=$value")
println("label=$label")
}
fun main() {
val value = 8
val range = 1..5
val inside = value in range
val label = if (inside) "inside" else "outside"
println("value=$value")
println("label=$label")
}
value ← 4, range ← 1..5, inside ← true, label ← inside
1fun main() {2 val value→ 4 = 4 //@value=0, 83 val range→ 1..5 = 1..54 val inside→ true = value4 in range1..55 val label→ inside = if (insidetrue) "inside" else "outside"67 println("value=$value4")8 println("label=$labelinside")9}outputvalue=4 label=inside
value ← 0, range ← 1..5, inside ← false, label ← outside
1fun main() {2 val value→ 0 = 03 val range→ 1..5 = 1..54 val inside→ false = value0 in range1..55 val label→ outside = if (insidefalse) "inside" else "outside"67 println("value=$value0")8 println("label=$labeloutside")9}outputvalue=0 label=outside
value ← 8, range ← 1..5, inside ← false, label ← outside
1fun main() {2 val value→ 8 = 83 val range→ 1..5 = 1..54 val inside→ false = value8 in range1..55 val label→ outside = if (insidefalse) "inside" else "outside"67 println("value=$value8")8 println("label=$labeloutside")9}outputvalue=8 label=outside
Follow the Range Check
valuestarts as4.rangeis1..5.- Kotlin checks whether
4is inside that range. - The check is true.
labelbecomesinside, so the script printslabel=inside. | value | in1..5? | label | | --- | --- | --- | | 4 | yes | inside | | 0 | no | outside | | 8 | no | outside |
Exercise: Ranges.kt
Reproduce value=4 and label=inside, then use the pinned value variants 0 and 8 to predict label=outside for both.