Entidades aninhadas


Em problemas reais é comum que entidades de domínio contenham outras entidades em níveis mais profundos.

Para acessar campos em múltiplos níveis, utiliza-se a função get-in, que recebe um vetor de chaves representando o caminho.

Para modificar ou atualizar dados aninhados sem perder a imutabilidade, utilizam-se as funções assoc-in ou update-in.

Exemplo de acesso aninhado:

(def company {:name "WidgetCo" :address {:city "Springfield"}})
(get-in company [:address :city]) ; => "Springfield"

Referências


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