1. 연구 모듈/Lisp - Clojure
[Clojure/Lisp] Clojure 맵에서 키워드를 키로 활용
사용자-1
2021. 12. 7. 07:53
Clojure에서 키워드는 앞에 :이 붙은 요소인데, 설명을 읽어봐도 잘 이해가 되지 않으므로 사용용도를 통해 그 정체를 기억하자.
맵의 이름은 함수처럼 사용해서 데이터를 참조하는 것이 가능한데, 키워드를 키로 지정할 경우, 이 키워드도 함수처럼 사용하는 것이 가능하다. (다른 맵 간에 키워드 중복 사용도 무방)
맵 정의
(def planet {:name "earth" :type "terrestrial" :satelite {:sateliteName "moon" :alternateName "luna"}})
데이터 참조
; 아래 세 구문 모두 같은 값 "terrestrial"을 갖는다. (planet :type) (get planet :type) (:type planet) ; 만약 키가 "type"(문자열)이라면, 이런 식의 사용은 불가능하다. -> "terrestrial"
연쇄 참조
; 아래 세 구문 모두 같은 값 "luna"을 갖는다. (:alternateName (:satelite planet)) (-> planet :satelite :alternateName) (get-in planet [:satelite :alternateName]) -> "luna"
키가 존재하지 않을 경우
; 존재하지 않는 키인 키워드를 사용할 경우 nil을 반환한다. (:orbit planet) -> nil
키워드에 네임스페이스 사용
; / 기호를 사용해 키워드에 네임스페이스를 줄 수도 있다. (:etc/alternateName {:name/sateliteName "moon" :etc/alternateName "luna"}) -> "luna"
<테스트 환경> - OS : Windows 10 - Leiningen 버전 : 1.0.0