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

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