Acesso a dados em maps em Clojure


get

Função padrão para busca. Se a chave não existir, retorna nil.

(def scores {"Angela" 1024})
 
(get scores "Angela") 
;; => 1024

Attention

Invocar um mapa nil resulta em um erro de NullPointerException.

(def bad-lookup-map nil)
 
(bad-lookup-map :foo)
;; => Execution error (NullPointerException) at user/eval154 (REPL:1). null

Invocação de Maps

Mapas podem ser invocados como funções, recebendo a chave como argumento.

(def directions {:north 0 :east 1})
(directions :north) 
;; => 0

Valores Padrão

Tanto get quanto a invocação aceitam um parâmetro extra como valor padrão caso a chave não seja encontrada.

(get scores "Sam" 0) 
;; => 0
 
(directions :northwest -1)
;; => -1

contains? e find

contains? verifica a existência da chave, enquanto find retorna o par chave-valor completo como um vetor.

(contains? scores "Fred") 
;; => true
 
(find scores "Angela") 
;; => ["Angela" 1024]

Referências


https://clojure.org/guides/learn/hashed_colls#_maps