프로그래밍 검색 블로그

clojure 함수형 패턴매칭 1 (cond) 본문

clojure기초

clojure 함수형 패턴매칭 1 (cond)

코딩조무사 2017. 10. 21. 18:02

어렵고 까다로운 문법임에도 불구하고 

함수형을 사용하는 몇가지 이유중 하나가 바로 패턴 매칭이다 


cond 조건1, 값1, 조건2, 값2 .... 

1
2
3
4
5
6
7
8
9
10
11
12
(defn foo [x]
      (println
        (cond
          (instance? String x) "is string"
          (> x 10"less 10"
          :else "other")))
 
 
(foo 20)
(foo "A")
(foo 33.0)
(foo 1)
cs

instance? 는 자바의 instanceof와 동일하다 

출력 :

less 10

is string

less 10

other



cond 함수는 인자를 2가지씩 받는다 

첫번째 인자는 조건함수를 나타내고 두번째 인자는 값을 나타낸다

조건함수를 실행 혹은 판별 시 true라면 그 뒤에 오는 인자를 반환한다 

 

:else 는 true로 계산된다, 가독성을 위한것으로 true라고 입력해도 동일하다 


첫번째 인자부터 순차적으로 판별하기 때문에 :else가 맨 위로 가면 other만 4번 출력하게 된다

(> x 10) 도 맨 위로 가면 (foo "A")에서 에러가 나게 된다




'clojure기초' 카테고리의 다른 글

clojure 함수형 패턴매칭 3 (condp)  (0) 2017.10.21
clojure 함수형 패턴매칭 2 (case)  (0) 2017.10.21
clojure factorial 1  (0) 2017.10.21
clojure 기초 반복 loop  (0) 2017.10.21
clojure 변수 선언  (0) 2017.10.21
Comments