試試這個:
> (use 'clojure.pprint)
> (def stuff '({:dim :time, :body "20 minutes from now", :value {:type "value", :value "2016-08-03T10:50:56.000+05:30", :grain :second, :values ({:type "value", :value "2016-08-03T10:50:56.000+05:30", :grain :second})}, :start 21, :end 40}))
我們用「漂亮打印」功能pprint
得到的數據結構一個很好的嵌套輸出:
> (pprint stuff)
({:dim :time,
:body "20 minutes from now",
:value
{:type "value",
:value "2016-08-03T10:50:56.000+05:30",
:grain :second,
:values
({:type "value",
:value "2016-08-03T10:50:56.000+05:30",
:grain :second})},
:start 21,
:end 40})
所以我們有一個項目的列表,它是鍵的映射:dim:body:value:start和:end。 :value
鍵的值是另一個鍵的映射:type,:value,:grain,:values。
所以,這種非巢,
(pprint (first stuff))
{:dim :time,
:body "20 minutes from now",
:value
{:type "value",
:value "2016-08-03T10:50:56.000+05:30",
:grain :second,
:values
({:type "value",
:value "2016-08-03T10:50:56.000+05:30",
:grain :second})},
:start 21,
:end 40}
> (pprint (:value (first stuff)))
{:type "value",
:value "2016-08-03T10:50:56.000+05:30",
:grain :second,
:values
({:type "value",
:value "2016-08-03T10:50:56.000+05:30",
:grain :second})}
> (pprint (:values (:value (first stuff))))
({:type "value",
:value "2016-08-03T10:50:56.000+05:30",
:grain :second})
你也可以使用線程,第一個宏->
如下:
> (pprint (-> stuff first :value :values))
({:type "value",
:value "2016-08-03T10:50:56.000+05:30",
:grain :second})
使原來的嵌套結構stuff
流通過功能first
,:value
和:values
(按此順序)。
感謝ü艾倫這樣一個很好的解釋。我接受了尤里的回答,他讓我介紹了讓我很開心的入門。 – sdream