typestar

Búsqueda en mapas en Clojure

Lleva la cuenta de plántulas en un mapa y luego agrega, quita y fusiona claves.

;; a map literal pairs keys with values
(def shelf {:basil 12 :dill 4 :sorrel 0})

;; get returns nil for a missing key unless you supply a default
(println (get shelf :dill) (get shelf :chervil 0))

;; assoc and dissoc return new maps and leave the original alone
(def restocked (assoc shelf :chervil 6))
(def thinned (dissoc restocked :sorrel))
(println thinned "vs" shelf)

;; merge folds the second map over the first, right side winning
(println (merge shelf {:dill 20 :thyme 3}))

;; contains? asks about keys; some searches the values instead
(println (contains? shelf :sorrel) (some zero? (vals shelf)))

Cómo funciona

  1. (get shelf :chervil 0) devuelve un valor por defecto en vez de nil para una clave que falta.
  2. assoc, dissoc y merge construyen cada uno un mapa nuevo mientras shelf queda como estaba.
  3. contains? pregunta si una clave está presente, y (some zero? (vals shelf)) busca en los valores.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
16
Caracteres a escribir
611
Tokens
85
Ritmo de tres estrellas
70 tpm

Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 73 segundos.

Escribe este fragmento

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

← Anterior Siguiente →