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
(get shelf :chervil 0)devuelve un valor por defecto en vez de nil para una clave que falta.assoc,dissocymergeconstruyen cada uno un mapa nuevo mientrasshelfqueda como estaba.contains?pregunta si una clave está presente, y(some zero? (vals shelf))busca en los valores.
Palabras clave y builtins usados aquí
assocdefdissocgetmergeprintlnsomevals
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.
Paso 2 de 3 en Colecciones; paso 5 de 27 en Fundamentos del lenguaje.