Check whether a set contains a value.

set A set keeps unique values and answers membership questions.

Set Basics

tag
SetBasics.kt
Replay: real traced execution (multi-file project)
fun main() {
    val tag = "red"
    val allowed = setOf("red", "blue")
    val hasTag = tag in allowed
    val label = if (hasTag) "allowed" else "missing"

    println("tag=$tag")
    println("label=$label")
}
fun main() {
    val tag = "blue"
    val allowed = setOf("red", "blue")
    val hasTag = tag in allowed
    val label = if (hasTag) "allowed" else "missing"

    println("tag=$tag")
    println("label=$label")
}
fun main() {
    val tag = "green"
    val allowed = setOf("red", "blue")
    val hasTag = tag in allowed
    val label = if (hasTag) "allowed" else "missing"

    println("tag=$tag")
    println("label=$label")
}
  1. tag ← red, allowed ← [red, blue], hasTag ← true, label ← allowed

    1fun main() {2    val tag→ red = "red" //@tag="blue", "green"3    val allowed→ [red, blue] = setOf("red", "blue")4    val hasTag→ true = tagred in allowed[red, blue]5    val label→ allowed = if (hasTagtrue) "allowed" else "missing"67    println("tag=$tagred")8    println("label=$labelallowed")9}
    outputtag=red
    label=allowed
  1. tag ← blue, allowed ← [red, blue], hasTag ← true, label ← allowed

    1fun main() {2    val tag→ blue = "blue"3    val allowed→ [red, blue] = setOf("red", "blue")4    val hasTag→ true = tagblue in allowed[red, blue]5    val label→ allowed = if (hasTagtrue) "allowed" else "missing"67    println("tag=$tagblue")8    println("label=$labelallowed")9}
    outputtag=blue
    label=allowed
  1. tag ← green, allowed ← [red, blue], hasTag ← false, label ← missing

    1fun main() {2    val tag→ green = "green"3    val allowed→ [red, blue] = setOf("red", "blue")4    val hasTag→ false = taggreen in allowed[red, blue]5    val label→ missing = if (hasTagfalse) "allowed" else "missing"67    println("tag=$taggreen")8    println("label=$labelmissing")9}
    outputtag=green
    label=missing

Check the Tag

  1. The allowed set contains red and blue.
  2. tag is red.
  3. tag in allowed returns true.
  4. The label becomes allowed. | Tag | In set? | Label | | --- | --- | --- | | red | yes | allowed | | blue | yes | allowed | | green | no | missing |

Exercise: SetBasics.kt

Check whether a tag is in an allowed set and print the resulting label