Collections
Set Basics
Check whether a set contains a value.
set
A set keeps unique values and answers membership questions.
Set Basics
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")
}
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
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
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
- The allowed set contains
redandblue. tagisred.tag in allowedreturns true.- 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