Maps en Scala
Un cajón de semillas como Map, leído de dos maneras y actualizado sin mutación.
// a Map literal pairs each key with a value using ->
val packets: Map[String, Int] =
Map("basil" -> 40, "dill" -> 12, "kale" -> 75)
// apply reads a key directly, and throws when the key is absent
val basilSeeds: Int = packets("basil")
// get wraps the answer in an Option, so a miss is a value
val foundDill: Option[Int] = packets.get("dill")
val missingSage: Option[Int] = packets.get("sage")
// getOrElse reads the key or falls back, all in one step
val sageCount: Int = packets.getOrElse("sage", 0)
// updated returns a new Map with one key rewritten
val afterSowing: Map[String, Int] = packets.updated("kale", 60)
// + takes a fresh pair; the original map still holds three entries
val withSage: Map[String, Int] = packets + ("sage" -> 25)
val stillThree: Boolean = packets.size == 3
Cómo funciona
- Cada par
"basil" -> 40liga clave y valor;packets("basil")lee una clave directo y lanza si no está. packets.get("dill")da unOption[Int]: una clave ausente no es error, ygetOrElse("sage", 0)lee con fallback.updated("kale", 60)reescribe una clave y+ ("sage" -> 25)agrega un par: ambos dan maps nuevos y no mutan nada.
Palabras clave y builtins usados aquí
val
El intento, en números
- Líneas
- 20
- Caracteres a escribir
- 794
- Tokens
- 125
- Ritmo de tres estrellas
- 70 tpm
Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 107 segundos.
Paso 2 de 3 en Colecciones; paso 11 de 27 en Fundamentos del lenguaje.