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
- kotlin
- async
- Android
- SHA1
- WebView
- Scala
- go
- template
- Reflect
- RAII
- AES
- Functional
- ChromeTab
- traits
- SHA512
- Chrono
- Clojure
- ranges
- stringprintf
- design pattern
- coroutines
- type_traits
- Observer
- haskell
- c++
- sha256
- web
- program
- CustomTab
- sprintf
Archives
- Today
- Total
프로그래밍 검색 블로그
clojure 함수형 패턴매칭 1 (cond) 본문
어렵고 까다로운 문법임에도 불구하고
함수형을 사용하는 몇가지 이유중 하나가 바로 패턴 매칭이다
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