List, Map, Vector같은 자료구조에서 특정한 값을 골라 바인딩하는 방법을 알아보겠다. 먼저 테스트에 사용될 중첩된 Vector를 정의한다.(def vec [[0 1] [2 3]]) Vector를 받는 함수를 정의하면서 매개변수단에서 두 번째 벡터의 첫 번째 값인 2를 추출하여 바인딩 해보겠다.(defn get-third [[_ [item _]] (str item " get complete")) 대강 봐서는 무슨소리인지 눈에 들어오지도 않을것이다. 해석해보자면 [[_ [item _]] 에서 굵게 표시된 부분은 함수의 파라미터란 뜻이다. (이전 글에서 언급한 적이 있다.)또한 [[_ [item _]] 에서 굵게 표시된 안쪽 대괄호는 [[0 1] [2 3]] 에서 굵게 표시된 바깥 대괄호를 뜻한다...
클로저에서 함수를 정의 및 호출하는 법을 알아보겠다. 함수의 골격은 기본적으로 (defn 함수명 "함수설명(생략가능)" [param] (body)) 로 이루어진다. 두 문자열을 결합하는 함수의 정의는 이렇게 한다. (defn appendString [str1 str2] (str str1 str2)) 다른 예로 두 수를 더하는 함수를 정의해보겠다.(defn plusNumber "더하기" [num1 num2] (+ num1 num2)) 매개변수가 없는경우 대괄호 사이를 비어두면 된다. 함수를 문서화시킬 수도 있는데 문서화는 doc 명령어를 사용한다.더하기 함수를 문서화 시키면 다음과 같은 결과가 나온다user=> (doc plusNumber)-------------------------user/plusNum..
맵의 정의는 아래와 같이 한다 {:key1 "value1", :key2 "value2} 각 요소마다는 쉼표로 구분하고, 키와 값 구분은 띄어쓰기로 한다. 키 이름 앞의 콜론(:)은 키워드라는 뜻이다.키워드는 자기 자신을 가르키는데에 사용한다. 각 함수를 사용하기 위해 변수에 Map을 할당하겠다. (def exMap {:key1 "val1", :key2 "val2", :key3 "val3"}) 키로 값을 가져오는 방법은 변수명에 키명을 전달해주면 된다. (exMap :key1) 결과로 "val1"이 출력된다. 방금처럼 변수명을 함수로 사용하는 것과 반대로 키를 함수로 사용할 수도 있다. (:key1 exMap) 결과로 똑같은 "val1"이 출력된다. 또한 두 개의 맵을 합칠 때에는 merge 함수를 이용한..
벡터와 리스트의 차이는 자바에서의 벡터와 리스트 차이를 생각하면 될 것 같다. 리스트는 벡터보다 약간 빠르지만 다중 스레드에 약하고,벡터는 약간 느리지만 다중 스레드에 최적화되어있다. 클로저에서는 코드를 담을 때에는 리스트를 사용하고, 데이터를 사용할 때에는 벡터를 사용한다. 벡터는 아래와 같이 정의할 수 있다. [:one :two :three] 벡터는 리스트와 사용할 수 있는 함수들이 같다. 요소를 가져올 때에도 nth 함수를 사용하며, 개수를 셀 때에는 count 함수를 사용한다.
리스트 리스트를 정의하는 방법에는 두 가지가 있다. (list 1 2 3)와'(1 2 3) 리스트를 변수 list에 담아보겠다 (def list '(1 2 3)) list 변수에 1,2,3이 담긴 리스트가 담겼다. 리스트에서 요소를 가져올 때에는 nth 함수를 이용한다두 번째 요소를 가져올 때에는 (nth list 1) 이렇게 가져올 수 있다.기타 first, last 함수가 있다. 두 list를 합할 때에는 concat 함수를 이용한다. (def list1 '(1 2 3))(def list2 '(4 5 6))(concat list1 list2) => (1 2 3 4 5 6) 또한 요소의 개수를 셀 때에는 count 함수를 이용한다 (count list1)
현재 클로저의 릴리즈된 최신버전은 1.7.0 버전이다.클로저는 http://clojure.org/ 에서 다운받을 수 있다. 또한 클로저 프로젝트 관리도구인 leiningen(라이닝겐)을 설치한다.https://github.com/technomancy/leiningen 라이닝겐은 자바의 maven과 비슷한 존재다.윈도우에서는 http://leiningen-win-installer.djpowell.net/ 에서 다운받는다.본인은 윈도우를 이용하였다. 그 후 설치폴더/bin 디렉토리를 환경변수에 등록해준다. 끝
- Total
- Today
- Yesterday
- 성능
- 람다
- 클로저
- 리액트
- 프로세서
- gitlab
- json
- 메모리
- 컴퓨터 시간
- RAMDA
- react
- javascript
- 자료구조
- Java8
- Java
- Clojure
- 코어
- rambda
- 날짜
- Docker
- 알람
- Jackson
- 성능개선
- Swift 2.0
- 자바
- 퍼포먼스
- opensource
- 자바 성능
- Stream
- 시간
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |