miércoles, 17 de febrero de 2021

Primeros pasos con Clojure, parte 23


 Seguimos con Clojure... 

Hay varias formas de buscar un valor en un mapa. La más obvia es la función get:

user=> (get scores "Angela")

1024

Cuando el mapa en cuestión se trata como una tabla de búsqueda constante, es común invocar el mapa en sí, tratándolo como una función:

user=> (def directions {:north 0

                        :east 1

                        :south 2

                        :west 3})

#'user/directions


user=> (directions :north)

0

No debe invocar directamente un mapa a menos que pueda garantizar que el resultado no será nulo:

user=> (def bad-lookup-map nil)

#'user/bad-lookup-map


user=> (bad-lookup-map :foo)

Execution error (NullPointerException) at user/eval154 (REPL:1).

null


Si deseamos realizar una búsqueda pero esperamos retornar a un valor predeterminado cuando no se encuentra la clave, debemos especifique el valor predeterminado como un parámetro adicional:


user=> (get scores "Sam" 0)

0​

user=> (directions :northwest -1)

-1


El uso de un valor predeterminado también es útil para distinguir entre una clave que falta y una clave existente con un valor nulo.


No hay comentarios.:

Publicar un comentario