Приятно видеть вопрос, связанный с Clojure 101! : -)
Вы можете отобразить :price
через best-sellers
; это, вероятно, не будет иметь большого значения для степени, в которой этот код является идиоматическим. В более сложных сценариях использование чего-то вроде get-price
может быть лучшим стилем и облегчить поддержку.
Что касается возможных более глубоких изменений в коде, то это на самом деле самый чистый способ его написания. В качестве альтернативы можно написать пользовательскую функцию сокращения:
(reduce (fn [{price :price} result] (+ price result))
0
best-sellers)
Это в основном объединяет map
и reduce
вместе; иногда это полезно, но в целом разбиение преобразования последовательности на отдельные, четко определенные шаги помогает удобочитаемости и удобству обслуживания и должно быть способом по умолчанию. Подобные комментарии относятся ко всем другим альтернативам, которые приходят мне в голову (включая loop
/ recur
).
В общем, я бы сказал, что ты это прибил. Здесь не нужно вносить никаких изменений. : -)