Clojure 读取一个 lazy-seq ({ }) 的内容
Clojure read the content of a lazy-seq ({ })
我是 Clojure 新手。我有这个问题:
我从一个函数接收到这个数据:
({:lat 40.4167754, :lng -3.7037902, :address Madrid, Spain})
当我请求 class 时,我得到:
> class x
> clojure.lang.LazySeq
我需要访问 :lat, :lng, :address,但我不知道如何访问。
试试这个:
(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 = " ...)
。
我是 Clojure 新手。我有这个问题:
我从一个函数接收到这个数据:
({:lat 40.4167754, :lng -3.7037902, :address Madrid, Spain})
当我请求 class 时,我得到:
> class x
> clojure.lang.LazySeq
我需要访问 :lat, :lng, :address,但我不知道如何访问。
试试这个:
(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 = " ...)
。