2012-05-25 2 views
11

레코드 용으로 struct-map과 같은 것이 있습니까? 그렇지 않다면 구조체를 사용해야합니까 (문서는 구조체의 사용을 권장하지 않습니다)?지도에서 Clojure 레코드를 채우는 방법은 무엇입니까?

아마도 내가 잘못하고있는 것일까 요? 나는 현재 옵션의지도를 취하는 다소 복잡한 기능을 가지고있다. 어떤 옵션 값을 받아 들일지/사용하는지 (레코드로 바꾸어서) 명확하게하려고합니다. 그리고 이제이 정보를지도에있는 코드에 인터페이스하고 싶습니다 (레코드의 데이터 집합을 포함).

답변

19

단순히 "문서"에 대한 레코드를 사용하지 않는 것이 좋습니다. 일반 오래된지도는 더욱 유연하고 간단하며 쉽습니다. 문서화를 위해서는 문서 문자열이나 주석을 추가하거나 (defn make-whatever [thing1 thing2])과 같은 함수를 작성하기 만하면됩니다.

레코드를 원하면 Clojure 버전 1.3 이상을 사용하는지 여부에 따라 몇 가지 선택 사항이 있습니다. 그렇다면 (defrecord Whatever ...)map->Whatever 함수를 정의하고 위치 지정 인수를 취하는 ->Whatever 함수를 정의합니다. 그렇지 않다면, (into (Whatever. nil nil nil) some-map) (기록 유형에 맞는 nils 수를 전달)을 쓸 수 있습니다.

관련 문제