728x90
맵은 키-값 쌍으로 구조화된 데이터를 저장하는데 많이 사용된다.
맵은 중괄호 {} 로 둘러싸인다.
1 2 3 | user=> {:jam1 "strawberry" :jam2 "blackberry"} {:jam1 "strawberry", :jam2 "blackberry"} | cs |
get 함수로 값을가져온다.
1 2 3 | user=> (get {:jam1 "strawberry" :jam2 "blackberry"} :jam2) "blackberry" | cs |
키가 없을 경우 반환되는 값을 디폴트로 줄 수 있다. get 함수의 마지막 인수로 디폴트 값 주면 된다.
1 2 3 4 | user=> (get {:jam1 "strawberry" :jam2 "blackberry"} :jam3 "not found") "not found" | cs |
키자체를 함수로도 사용할 수 있다.
1 2 3 4 | user=> (:jam2 {:jam1 "strawberry" :jam2 "blackberry" :jam3 "marmalade"}) "blackberry" | cs |
keys 함수는 맵의 키만을, vals 함수는 맵의 값만 반환한다.
1 2 3 4 5 6 | user=> (keys {:jam1 "strawberry" :jam2 "blackberry" :jam3 "marmalade"}) (:jam1 :jam2 :jam3) user=> (vals {:jam1 "strawberry" :jam2 "blackberry" :jam3 "marmalade"}) ("strawberry" "blackberry" "marmalade") | cs |
맵의 값 갱신하기 (update)
컬렉션의 값은 불변이기 때문에 갱신한다고 할 때는, 갱신된 값을 가지고 새로운 데이터 구조를 반환함을 의미한다.
클로저의 존속적 데이터 구조는 구조 공유를 사용해 아주 효율적으로 생성된다.
컬렉션을 변경하는 함수는 새로운 버전의 컬렉션을 반환한다.
assoc 함수는 맵에 새로운 키-값 쌍을 결합한다.
1 2 3 4 5 | user=> (assoc {:jam1 "red" :jam2 "black"} :jam1 "orange") {:jam1 "orange", :jam2 "black"} user=> | cs |
dissoc 함수는 맵과 키를 인수로 받아 그 키-값 쌍이 제거된 새로운 맵을 반환한다.
1 2 3 4 5 | user=> (dissoc {:jam1 "strawberry" :jam2 "blackberry"} :jam1 ) {:jam2 "blackberry"} user=> | cs |
merge 함수는 여러 맵의 키-값 쌍을 합치는 데 아주 편리하다.
1 2 3 4 5 6 7 | user=> (merge {:jam1 "red" :jam2 "black"} #_=> {:jam1 "orange" :jam3 "red"} #_=> {:jam4 "blue"}) {:jam1 "orange", :jam2 "black", :jam3 "red", :jam4 "blue"} user=> | cs |
728x90
'프로그래밍 Programming' 카테고리의 다른 글
클로저 07. 데이터 컬렉션 - 리스트가 핵심 (0) | 2018.08.17 |
---|---|
클로저 06. 데이터 컬렉션 - 집합 (0) | 2018.08.17 |
클로저 04. 데이터 컬렉션 - 컬렉션의 공통점 (0) | 2018.08.17 |
클로저 03. 데이터 컬렉션 - 벡터 (0) | 2018.08.17 |
리눅스 계정 및 홈디렉토리 삭제 (0) | 2018.08.14 |