typestar

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

  1. Cada par "basil" -> 40 liga clave y valor; packets("basil") lee una clave directo y lanza si no está.
  2. packets.get("dill") da un Option[Int]: una clave ausente no es error, y getOrElse("sage", 0) lee con fallback.
  3. 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í

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.

Escribe este fragmento

Paso 2 de 3 en Colecciones; paso 11 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →

Maps en otros lenguajes