1

我是 clojure 的新手,需要一些帮助才能从惰性序列中获取价值。

您可以在这里查看我的完整数据结构:http: //pastebin.com/ynLJaLaP 我需要的是标题的内容:

{: _content AlbumTitel2}

我设法获得了所有 _content 值的列表:

(def albumtitle (map #(str (get % :title)) photosets))
(println albumtitle)

结果是:

({:_content AlbumTitel2} {:_content test} {:_content AlbumTitel} {:_content album123}   {:_content speciale} {:_content neues B5 Album} {:_content Album Nr 2})

但是我怎样才能得到每个 :_content 的价值呢?

任何帮助,将不胜感激!

谢谢!

4

2 回答 2

7

你可以简单地这样做

(map (comp :_content :title) photosets)

关键字作为函数工作,因此组合comp将首先检索:title每个照片集的值,然后进一步检索该:_content值的值。

或者,这可以写成

(map #(get-in % [:title :_content]) photosets)
于 2013-08-07T15:18:15.397 回答
1

一个半替代解决方案是

(->> data
 (map :title) 
 (map :_content))

这利用了关键字是函数和所谓的 thread last 宏这一事实。它所做的是将第一个表达式的结果作为第二个等的最后一个参数注入。

上面的代码被转换为

(map :_content (map :title data))

显然不那么可读,以后也不容易扩展。

PS我认为将数据粘贴到网络时出现问题,因为:

{: _content AlbumTitel2}

不是 Clojure 语法,但这是:

{:_content "AlbumTitel2"}  

: 之后没有空格,文本周围没有“”。以防万一您可能想在其他时候粘贴一些 Clojure。

于 2013-08-08T10:26:08.340 回答