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