2013-08-07 44 views
1

Iam新增clojure并需要一些帮助才能从懒惰序列中获取值。clojure:如何从惰性seq获取值?

你可以看看我的完整的数据结构在这里: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?

任何帮助,将不胜感激!

谢谢!

回答

7

你可以简单地这样做

(map (comp :_content :title) photosets) 

关键字的工作方式的功能,因此与comp成分会先检索每个photoset的:title值,然后再检索该值的:_content值。

或者这可以写成

(map #(get-in % [:title :_content]) photosets) 
1

半替代解决方案是做

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

这走的事实,即关键字是功能和所谓的线程最后一个宏的进步。它的作用是注入第一表达式的结果作为第二个等的最后一个参数..

上面的代码被转换为

(map :_content (map :title data)) 

显然不如可读的,并且不容易以后扩大无论是。

PS我asume出事了,当数据被贴到网上,这是因为:

{: _content AlbumTitel2} 

是不是Clojure的语法,但是这就是:

{:_content "AlbumTitel2"} 

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