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
'1. 연구 모듈 > Lisp - Clojure' 카테고리의 다른 글
[Clojure/Lisp] Clojure에서 println 어렵게 해보기 (0) | 2022.03.28 |
---|---|
[Clojure/Lisp] Clojure에서 자바 클래스 사용하기 (0) | 2021.12.06 |
[Lisp/Clojure] Clojure에서 "->" 매크로 사용 (0) | 2020.12.18 |
[Lisp/Clojure] 아무 Clojure 실행방법 대잔치 (0) | 2018.04.13 |
[Lisp/Clojure] HTTP 파싱하기 (enlive 모듈 사용) (0) | 2017.09.14 |