def~~ 구문은 사실 모두 특수 구문 def의 래퍼라고 한답니다.
def 에잇 쩨기라웁나우~ 그 래퍼를 말하는 건가요?
아니면 참조 래퍼를 말하는 걸까요?
자 그러면 def~ 이하의 모습들을 알아봅시다.
defvar - 주석을 달기 위해 사용합니다.
(clojure.contrib.def/defvar a-symbol inital-value? docstring?)
ex
[sourcecode language="clojure"]
(defvar hello "hello! hj" "this say that 'hello! hj'")
# check -
(doc hello)
[/sourcecode]
defonce - 루트 바인딩이 되지 않은 경우 바인딩시킨다.
만약 바인딩이 되어있다면 무시된다.
(defonce a-symbol inital-value?)
ex
[sourcecode lanugage="clojure"]
(defonce foo 5)
[/sourcecode]
defhinted - 타입을 고정하기 위해 사용됩니다.
(clojure.contrib.def/defhinted-asymbol initial-value?)
ex
[sourcecode language="clojure"]
(defhinted x {1, 2})
(defhinted x [1, 2]) # occur error.
[/sourcecode]
위와 같이 오류를 발생됩니다.
defn- - private 함수를 정의한다. (이름공간에 한정된다.)
(defn- name & args-as-for-defn)
ex
[sourcecode langauge="clojure"]
- ... -
[/sourcecode]