从延迟序列访问数据

时间:2016-12-16 18:45:31

标签: clojure

我正在尝试从数据库中检索数据。数据以懒惰的顺序返回。我可以查看repl中的数据,它看起来像这样:

({:foo value1, :bar value2})

如何获取此数据?最好如何将其变成地图?我试过了:

(doall sequence(get sequence:foo)) 这只是返回零。和

(apply hash-map user-settings)

返回

llegalArgumentException No value supplied for key: {:foo value1, :bar value2} clojure.lang.PersistentHashMap.create (PersistentHashMap.java:77)

我对clojure很新,并且长期坚持这个问题。提前致谢。

2 个答案:

答案 0 :(得分:2)

您已经有了地图,它恰好是您列表中唯一的项目。

(def data (first '({:foo 123 :bar 456})))

(:foo data)  ; => 123

答案 1 :(得分:0)

有时,当您想要打印延迟seq以查看数据时使用into。例如,如果您想查看惰性向量的内容,请使用(into [] your-lazy-vector)(into {} your-lazy-map)

您可以在println函数或let中执行此非冷却转换。但是,我建议在发布或pull-request之前删除这种调试帮助。

懒惰序列很棒,大部分时间都很好。