Use an inclusive range to check membership.

range The `..` operator builds an inclusive range.

Ranges

value
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")
}
  1. 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
  1. 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
  1. 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

  1. value starts as 4.
  2. range is 1..5.
  3. Kotlin checks whether 4 is inside that range.
  4. The check is true.
  5. label becomes inside, so the script prints label=inside. | value | in 1..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.