프로그래밍 검색 블로그

clojure 오버로딩 본문

clojure기초

clojure 오버로딩

코딩조무사 2017. 10. 28. 17:25

clojure에서는 원소의 개수에 따라서 오버로딩을 할 수 있다


그러나 다른 프로그래밍 언어에서 생각하던대로 그냥 두개의 함수를 정의하면 에러가 나고

1
2
3
(defn func [] (println "nothing"))
(defn func [a] (println "once"))
=> Exception in thread "main" clojure.lang.ArityException: Wrong number of args (0) 
cs



다음과 같이 한 함수 안에서 두개의 함수를 정의해야 한다


1
2
3
4
5
6
7
8
9
(defn func
      ([] (println "nothing"))
      ([a] (println "once"))
      ([a b] (println "twice")))
 
(func)
(func 1)
(func [1 2 3])
(func 1 2)
cs



출력: 

nothing

once

once

twice


다른 언어를 하다 보면 살짝 특이한 오버로딩 방법 

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

clojue fibonacci / lazy-seq  (0) 2017.10.29
clojue fibonacci / memoize  (0) 2017.10.29
clojure java와 연결  (0) 2017.10.28
clojure 함수형 프로그래밍 3 (apply)  (0) 2017.10.26
clojure 함수형 프로그래밍 3 (range)  (0) 2017.10.22
Comments