Clojure에서 set
함수는 vector
또는 list
을 자동으로 set
으로 변환합니다. 그러나 이것은 sorted-set
의 경우에는 해당되지 않습니다 :Clojure에서 목록 또는 벡터를 정렬 된 집합으로 변환하는 방법은 무엇입니까?
(set [3 2 1]) ; #{1 2 3}
(set '(3 2 1)) ; #{1 2 3}
(sorted-set [3 2 1]) ; #{[3 2 1]}
(sorted-set '(3 2 1)) ; #{(3 2 1)}
이다 내가 가지고 올 해결책 :
(defn sorted-set-from-coll [coll]
(eval (cons sorted-set (seq coll))))
(def v [3 2 1])
(sorted-set-from-coll v) ; #{1 2 3}
(sorted-set-from-coll '(3 2 1)) ; #{1 2 3}
(sorted-set-from-coll [3 1 2]) ; #{1 2 3}
은 평가하지 않고이 작업을 수행 할 수있는 더 나은/더 관용적 방법이 있나요?
'into'는 일어나는 일 (하나의 데이터 구조에서 다른 데이터 구조로)을 전달하고 기존 대상 데이터 구조와 함께 사용할 수 있으므로 더 관용적입니다. –