2012-05-27 2 views
16

Clojure 1.3+에서 (= m (zipmap (keys m) (vals m))) 을 사용 하시겠습니까?Clojure의지도 : 키와 값이 같은 순서입니까?

그 변경 한 경우

(defn replace-keys [smap m] 
    (into {} (for [[k v] m] [(smap k k) v])) 
+1

일반적으로 맵 데이터 구조의 경우 "위치"를 고려하는 것이 좋지 않다고 생각합니다. – Ankur

+0

2013 년에 이것이 구현 세부 사항 또는 약속으로 간주됩니까? – ToBeReplaced

답변

18

예, Clojure의 많은 휴식 것입니다 예를 들어

(defn replace-keys [smap m] 
    (zipmap (replace smap (keys m)) (vals m))) 

대,이 문제가 어떤 상황에서 약간 더 읽을 수있는 코드있게 가졌어요.

지도는 나무로 저장되며 두 함수는 같은 트리를 같은 순서로 사용합니다.

+0

어디서나 문서화되었거나 변경 될 수있는 구현 세부 사항이 있습니까? –

+0

Clojure의 Google 그룹에서 [이 질문] (https://groups.google.com/forum/?fromgroups#!topic/clojure/s1sFVF7dAVs)을 확인하십시오. 문구까지도 똑같은 질문입니다. –

+0

예, 보았지만 _after_ 게시했습니다. – timc

관련 문제