Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Clojure
- Observer
- Functional
- kotlin
- template
- coroutines
- sha256
- Android
- sprintf
- RAII
- SHA512
- ranges
- WebView
- web
- haskell
- ChromeTab
- program
- Scala
- CustomTab
- traits
- stringprintf
- design pattern
- go
- Reflect
- async
- AES
- SHA1
- type_traits
- Chrono
- c++
Archives
- Today
- Total
프로그래밍 검색 블로그
clojure 함수형 패턴매칭 3 (condp) 본문
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
다음과같은 출력이 된다
'clojure기초' 카테고리의 다른 글
clojure 함수형 프로그래밍 2 (reduce, reduce-kv) (0) | 2017.10.22 |
---|---|
clojure 함수형 프로그래밍 1 (map) (0) | 2017.10.22 |
clojure 함수형 패턴매칭 2 (case) (0) | 2017.10.21 |
clojure 함수형 패턴매칭 1 (cond) (0) | 2017.10.21 |
clojure factorial 1 (0) | 2017.10.21 |
Comments