Попробуйте это:
(defn mystery-fn []
(list {:lat 40.4167754, :lng -3.7037902, :address "Madrid, Spain"})
)
(println :println (mystery-fn))
(prn :prn (mystery-fn))
(def a (first (mystery-fn)))
(prn :a a)
(def b (:lat a))
(prn :b b)
с выходом:
:reloading (tst.clj.core)
:println ({:lat 40.4167754, :lng -3.7037902, :address Madrid, Spain})
:prn ({:lat 40.4167754, :lng -3.7037902, :address "Madrid, Spain"})
:a {:lat 40.4167754, :lng -3.7037902, :address "Madrid, Spain"}
:b 40.4167754
Обратите внимание на разницу между println
и prn
. Используя prn
, вы получаете строки с двойными кавычками, которые могут многое помочь, когда есть встроенные пространства.
Кроме того, если вы хотите наметить печатный результат, часто проще использовать ключевое слово как ярлык, например (prn :xyz ...)
, а не (println "xyz = " ...)
.
Если последовательность всегда содержит одно значение? Вы можете использовать '(first x)' для получения первой карты. – Lee
Ваши данные не действительны. Я бы ожидал '({: lat 40.4167754,: lng -3.7037902,: address" Madrid, Spain "})', с предварительным '' ', если вы ожидаете его прочитать. – Thumbnail
Спасибо @ Lee, что является ключом к решению моей проблемы. – matiasmasca