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 | 29 | 30 | 31 |
Tags
- CustomTab
- SHA512
- design pattern
- stringprintf
- go
- sprintf
- Scala
- type_traits
- Observer
- AES
- Functional
- ChromeTab
- program
- Clojure
- Chrono
- SHA1
- kotlin
- coroutines
- RAII
- sha256
- ranges
- Reflect
- Android
- haskell
- WebView
- traits
- web
- template
- c++
- async
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