Maps, Sets, and Grouping
Map Access
Look up, update, and test keys in a map.
map-access
A map links keys to values. `getOrElse` reads a key with a fallback, `contains` tests for a key, and `+` returns a new map with an added entry.
Map Access
MapAccess.scala
Replay: real traced execution (multi-file project)
object Main {
def main(args: Array[String]): Unit = {
val key = "b"
val scores = Map("a" -> 1, "b" -> 2)
val updated = scores + ("c" -> 3)
val value = updated.getOrElse(key, 0)
val has = updated.contains(key)
println("size=" + updated.size)
println("value=" + value)
println("has=" + has)
}
}
object Main {
def main(args: Array[String]): Unit = {
val key = "a"
val scores = Map("a" -> 1, "b" -> 2)
val updated = scores + ("c" -> 3)
val value = updated.getOrElse(key, 0)
val has = updated.contains(key)
println("size=" + updated.size)
println("value=" + value)
println("has=" + has)
}
}
object Main {
def main(args: Array[String]): Unit = {
val key = "z"
val scores = Map("a" -> 1, "b" -> 2)
val updated = scores + ("c" -> 3)
val value = updated.getOrElse(key, 0)
val has = updated.contains(key)
println("size=" + updated.size)
println("value=" + value)
println("has=" + has)
}
}
key ← b, scores ← Map(a -> 1, b -> 2), updated ← Map(a -> 1, b -> 2, c -> 3)
1object Main {2 def main(args: Array[String]): Unit = {3 val key→ b = "b" //@key="a", "z"4 val scores→ Map(a -> 1, b -> 2) = Map("a" -> 1, "b" -> 2)5 val updated→ Map(a -> 1, b -> 2, c -> 3) = scoresMap(a -> 1, b -> 2) + ("c" -> 3)6 val value→ 2 = updatedMap(a -> 1, b -> 2, c -> 3).getOrElse(keyb, 0)7 val has→ true = updatedMap(a -> 1, b -> 2, c -> 3).contains(keyb)89 println("size=" + updated.size3)10 println("value=" + value2)11 println("has=" + hastrue)12 }13}outputsize=3 value=2 has=true
key ← a, scores ← Map(a -> 1, b -> 2), updated ← Map(a -> 1, b -> 2, c -> 3)
1object Main {2 def main(args: Array[String]): Unit = {3 val key→ a = "a"4 val scores→ Map(a -> 1, b -> 2) = Map("a" -> 1, "b" -> 2)5 val updated→ Map(a -> 1, b -> 2, c -> 3) = scoresMap(a -> 1, b -> 2) + ("c" -> 3)6 val value→ 1 = updatedMap(a -> 1, b -> 2, c -> 3).getOrElse(keya, 0)7 val has→ true = updatedMap(a -> 1, b -> 2, c -> 3).contains(keya)89 println("size=" + updated.size3)10 println("value=" + value1)11 println("has=" + hastrue)12 }13}outputsize=3 value=1 has=true
key ← z, scores ← Map(a -> 1, b -> 2), updated ← Map(a -> 1, b -> 2, c -> 3)
1object Main {2 def main(args: Array[String]): Unit = {3 val key→ z = "z"4 val scores→ Map(a -> 1, b -> 2) = Map("a" -> 1, "b" -> 2)5 val updated→ Map(a -> 1, b -> 2, c -> 3) = scoresMap(a -> 1, b -> 2) + ("c" -> 3)6 val value→ 0 = updatedMap(a -> 1, b -> 2, c -> 3).getOrElse(keyz, 0)7 val has→ false = updatedMap(a -> 1, b -> 2, c -> 3).contains(keyz)89 println("size=" + updated.size3)10 println("value=" + value0)11 println("has=" + hasfalse)12 }13}outputsize=3 value=0 has=false