Clojure读取了lazy-seq({})的内容

时间:2016-10-21 15:47:40

标签: clojure lazy-evaluation seq

我是Clojure的新人。我有这个问题:

我从函数中收到这些数据:

({:lat 40.4167754, :lng -3.7037902, :address Madrid, Spain})  

当我要求上课时,我得到:

> class x
> clojure.lang.LazySeq

我需要访问:lat,:lng,:地址,但我不知道如何。

1 个答案:

答案 0 :(得分:1)

试试这个:

(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

注意printlnprn之间的区别。使用prn,您可以使用双引号显示字符串,这在嵌入空格时可以提供很多帮助。

此外,当您想标记打印输出时,通常更容易使用关键字作为(prn :xyz ...)标签,而不是(println "xyz = " ...)