프로그래밍 검색 블로그

clojure 함수형 패턴매칭 3 (condp) 본문

clojure기초

clojure 함수형 패턴매칭 3 (condp)

코딩조무사 2017. 10. 21. 22:26

condp는 함수, 비교값을 받아서 그 함수에 유효한 첫번째 값을 반환한다


1
2
3
4
5
6
7
8
9
(defn foo [x]
      (println
        (condp = x
                1 "one"
                2 "two"
                3 "three"
                4 "four"
                "other value"
          )))
cs

이렇게 했을때는 인자로 숫자가 들어왔을때 순서대로 동일한 값을 반환한다


1
2
3
4
5
(foo 2)
(foo "A")
(foo 3.0)
(foo 1)
(foo 0)
cs

출력 :

two

other value

other value

one

other value




비교함수에 =를 넣었을떄는 앞의 case와 동일하다. 인자를 바꿔서

operator > 를 넣었을때는 


1
2
3
4
5
6
7
8
9
(defn foo [x]
      (println
        (condp > x
                1 "one"
                2 "two"
                3 "three"
                4 "four"
                "other value"
          )))
cs


1
2
3
4
5
(foo 2)
;(foo "A") 에러
(foo 3.0)
(foo 1)
(foo 0)
cs

operator>에 대해서는 String에 대해서는 에러이고 나머지만 비교를 진행하면

출력:

three

four

two

one


다음과같은 출력이 된다 

Comments