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 : 코드가 수행해야하는 작업에 대한 추가 정보를 추가했습니다. 본질적으로이 함수는 중첩 된 맵을 ** 평면 시퀀스 **로 평평하게 만듭니다. 이 함수는 원하는대로 중첩 된 맵을 병합하지만 맵 시퀀스가 아닌 다른 시퀀스 * 내에 일련의 맵을 반환합니다. – Ari