Acesso a campos de entidades via keywords
Embora existam várias formas de busca de dados em maps, a maneira mais comum em Clojure para acessar valores de campos é invocar a própria keyword como uma função.
Assim como os mapas e conjuntos, as keywords em Clojure são funções que realizam uma busca de si mesmas na estrutura de dados que lhes é passada como argumento.
Sintaxe:
(:campo entidade)Exemplo:
(def person
{:first-name "Kelly"
:last-name "Keen"
:age 32
:occupation "Programmer"})
(person :occupation)
;; => "Programmer"Embora o jeito acima funcione, a forma mais comum de acessar um campo é utilizando a keyword na posição de função, pois isso garante uma maior segurança contra NullPointerException. Veja o exemplo abaixo.
(:occupation person)
;; => "Programmer"NOTE
Se o mapa passado for
nil, a keyword invocada retornará apenasnilem vez de lançar um erro, o que torna o código mais robusto.
Suporte a Valor Padrão
Assim como o get, a invocação da keyword aceita um valor opcional caso a chave não exista.
Por exemplo:
(:favorite-color person "beige")Referências
https://clojure.org/guides/learn/hashed_colls#_field_accessors