2013-08-07 50 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。