1
我把下面的函數放在一起。它應該採用嵌套(多層)地圖並返回一系列平面地圖;然而,它目前在一個序列中返回一個序列。從函數返回序列
有誰知道爲什麼序列嵌套在另一個序列中嗎?
(defn collapse [data & keys-coll]
(if (map? data)
(for [[k v] data]
(collapse v (if (nil? keys-coll)
(conj [] k)
(conj (into [] keys-coll) k))))
(hash-map (flatten keys-coll) data)))
(collapse {"a" {2011 [["a" 2011 "dan"] ["a" 2011 "ari"]] 2010 [["a" 2010 "jon"]]}})
結果:
( ({("a" 2011) [["a" 2011 "dan"] ["a" 2011 "ari"]]} {("a" 2010) [["a" 2010 "jon"]]}) )
預期/所需的結果(注意序列,NOT的序列內的序列如上):
({("a" 2011) [["a" 2011 "dan"] ["a" 2011 "ari"]]} {("a" 2010) [["a" 2010 "jon"]]})
注:預期的結果是一系列地圖;每個映射都由複合鍵和嵌套向量組成。
由於輸入映射是嵌套的,所以輸出序列是嵌套的。由於我不知道代碼* *應該做什麼,因此無法真正幫助您。 –
@JoostDiepenmaat:我添加了更多關於代碼應該做什麼的信息。本質上,該函數應該將嵌套地圖平鋪成** a **平面地圖序列。該函數根據需要平滑嵌套地圖,但它會在另一個序列*中返回一系列地圖*,而不僅僅是地圖序列。 – Ari