티스토리 뷰
맵의 정의는 아래와 같이 한다
{:key1 "value1", :key2 "value2}
각 요소마다는 쉼표로 구분하고, 키와 값 구분은 띄어쓰기로 한다.
키 이름 앞의 콜론(:)은 키워드라는 뜻이다.
키워드는 자기 자신을 가르키는데에 사용한다.
각 함수를 사용하기 위해 변수에 Map을 할당하겠다.
(def exMap {:key1 "val1", :key2 "val2", :key3 "val3"})
키로 값을 가져오는 방법은 변수명에 키명을 전달해주면 된다.
(exMap :key1)
결과로 "val1"이 출력된다.
방금처럼 변수명을 함수로 사용하는 것과 반대로 키를 함수로 사용할 수도 있다.
(:key1 exMap)
결과로 똑같은 "val1"이 출력된다.
또한 두 개의 맵을 합칠 때에는 merge 함수를 이용한다.
(def map1 {:key1 10, :key2 20})
(def map2 {:key3 30, :key4 40})
(merge map1 map2)
결과로 두 맵을 합친 결과인 {:key1 10, :key2 20, :key3 30, :key4 40} 가 출력된다.
또한 merge-with이라는 함수도 있는데 merge할 때 키 값이 겹치면 결합을 위한 해결방법을 지정해 줄 수 있다.
(def map1 {:key1 10, :key2 20})
(def map2 {:key2 30, :key3 40})
위의 변수를 보면 :key2가 중복되기에 결합할 때 값을 어찌할 지 애매해진다.
그 해결방법을 두 값을 합치는 것으로 지정해보겠다
(merge-with + map1 map2)
+를 인자로 넘겨줌으로써 키 값이 겹치면 더하도록 지정했다.
결과로는 {:key1 10, :key2 50, :key3 40} 이 출력된다.
겹치는 키인 :key2의 각각의 값인 20과 30이 더해져 50이 출력됬다.
'Clojure' 카테고리의 다른 글
[Clojure] 클로저에서 Vector 분해 (0) | 2015.11.25 |
---|---|
[Clojure] 클로저에서 함수 정의 및 호출 (0) | 2015.11.25 |
[Clojure] 클로저의 자료구조2 (벡터) (0) | 2015.11.24 |
[Clojure] 클로저의 자료구조1 (리스트) (0) | 2015.11.24 |
[Clojure] 클로저의 수식 연산 (0) | 2015.11.24 |
- Total
- Today
- Yesterday
- 리액트
- 퍼포먼스
- 성능개선
- 성능
- 날짜
- opensource
- gitlab
- Stream
- 람다
- 자바 성능
- 메모리
- Clojure
- 자바
- 알람
- 코어
- Swift 2.0
- 클로저
- 시간
- 자료구조
- RAMDA
- 프로세서
- Java
- json
- Jackson
- react
- javascript
- 컴퓨터 시간
- Docker
- Java8
- rambda
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |