2011-01-03 3 views
2

나는 Clojure에서 해시 맵 목록을 포함하는 벡터를 가지고 있으며이 벡터에 대한 추가 시계를 사용하여 변경 사항을 확인합니다. 해쉬 맵에 대한 변경 사항을 쉽게 비교할 수있는 방법이 있나요? 해시 맵에서 변경된 항목 목록을 얻을 수 있을까요?클로저에있는 해시 벡터의 diff를 어떻게 알 수 있습니까?

참고 : 이는 내가 ref에 저장된 데이터 구조에 대한 데이터베이스 변경 내용을 유지하려고 시도했던 일부 이전 게시물에서 계속됩니다. 상태를 저장하는 가장 쉬운 방법은 변경 사항 참조를보고 해당 변경 사항을 저장하는 것입니다. 내 이상적인 해결책은 add-watch가 changelist를 또한 통과했을 때이다.

+1

다음은 관련있는 것으로 보입니다. http://stackoverflow.com/questions/3387155/difference-between-two-maps – pmf

+0

다른 질문은 두지도를 비교하는 것으로, 두 벡터를 비교하고 싶습니다. – Zubair

답변

1

아마도 "diff"를 좀 더 정확하게 정의해야 할 것이다. 예를 들어, 벡터의 중간에 하나의 변경으로 삽입하거나 그 요소와 모든 후속 요소를 변경 한 것으로 계산합니까? 또한 귀하의 벡터는 동일한 길이가 보장됩니까?

  • 먼저 두 벡터의 길이를 확인 :

    는 간단한 방법 같은 것을 할 것이라고 말했다 가졌어요. 하나가 더 길다면 여분의 요소를 변경으로 고려하십시오.
  • 그런 다음 다른 모든 요소를 ​​not =를 사용하여 다른 벡터의 해당 요소와 비교하십시오 (해시와 함께 작동하며 요소가없는 일반적인 경우 매우 빠름) 변경됨). 시작해야 할 것 : (map not = vector-1 vector-2)
  • 두 맵이 어떻게 다른지 정확하게 알고 싶다면 위에서 언급 한 stackoverflow.com/questions/3387155/difference-between-two-maps의 대답을 사용할 수 있습니다.
관련 문제