【问题标题】:Access data from a Lazy Sequence从惰性序列访问数据
【发布时间】:2016-12-16 18:45:30
【问题描述】:

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

({:foo value1, :bar value2})

如何获取这些数据?最好,我怎样才能把它变成地图?我试过了:

(doall 序列 (获取序列 :foo)) 这只是返回零。和

(apply hash-map user-settings)

返回

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

我对 clojure 很陌生,并且已经坚持了太久了。提前致谢。

【问题讨论】:

  • 数据以惰性序列返回 - 什么是惰性序列?您有一个由映射{:foo value1, :bar value2} 表示的记录序列。你能有几个这样的记录吗?你想如何将它们组合成一个地图/表格?记录中是否有要索引它们的键?

标签: clojure


【解决方案1】:

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

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

(:foo data)  ; => 123

【讨论】:

    【解决方案2】:

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

    您可以在 println 函数或 let 中进行这种不酷的转换。但是,我建议在发布或拉取请求之前删除这种调试辅助。

    大多数时候,惰性序列很棒。

    【讨论】:

      猜你喜欢
      • 2021-04-22
      • 2011-07-21
      • 1970-01-01
      • 2010-12-08
      • 2010-11-06
      • 2014-11-10
      • 2016-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多