clojure:如何从lazy seq获取值?

clojure:如何从lazy seq获取值?,clojure,lazy-sequences,Clojure,Lazy Sequences,我是clojure新手,需要一些帮助才能从惰性序列中获取值 您可以在此处查看我的完整数据结构: 我需要的是标题的内容: {: _content AlbumTitel2} 我设法得到了所有内容值的列表: (def albumtitle (map #(str (get % :title)) photosets)) (println albumtitle) 结果是: ({:_content AlbumTitel2} {:_content test} {:_content AlbumTitel} {

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

您可以在此处查看我的完整数据结构: 我需要的是标题的内容:

{: _content AlbumTitel2}
我设法得到了所有内容值的列表:

(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})
但我如何才能获得每个:\ u内容的价值

任何帮助都将不胜感激


谢谢

你可以这么做

(map (comp :_content :title) photosets)
关键字作为函数工作,因此使用
comp
的合成将首先检索每个照片集的
:title
值,然后进一步检索该值的
:\u content

或者,这可以写成

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

你可以这么做

(map (comp :_content :title) photosets)
关键字作为函数工作,因此使用
comp
的合成将首先检索每个照片集的
:title
值,然后进一步检索该值的
:\u content

或者,这可以写成

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

一个半替代的解决方案是这样做

(->> data
 (map :title) 
 (map :_content))
这是因为关键字是函数和所谓的thread last宏。它所做的是将第一个表达式的结果作为第二个表达式的最后一个参数注入

上面的代码被转换为

(map :_content (map :title data))
显然不那么可读,以后也不容易扩展

PS I asume数据粘贴到web时出错,因为:

{: _content AlbumTitel2}
不是Clojure语法,但这是:

{:_content "AlbumTitel2"}  

否:文本后面的空格:,和“”周围的空格。以防万一你可能想在其他时间粘贴一些Clojure

一个半替代的解决方案是

(->> data
 (map :title) 
 (map :_content))
这是因为关键字是函数和所谓的thread last宏。它所做的是将第一个表达式的结果作为第二个表达式的最后一个参数注入

上面的代码被转换为

(map :_content (map :title data))
显然不那么可读,以后也不容易扩展

PS I asume数据粘贴到web时出错,因为:

{: _content AlbumTitel2}
不是Clojure语法,但这是:

{:_content "AlbumTitel2"}  
否:文本后面的空格:,和“”周围的空格。以防万一你可能想在其他时间粘贴一些Clojure