나는 Clojure를 배우고있다. 아직도 나는 언어와 철학에 대해 잘 이해하지 못했다. .Clojure에서 도트 연산자와 정규화 된 명명 된 호출의 차이점
그러나 나는 언어에 더 익숙해지고 싶습니다. 그러므로 나는 Clojure 핵심 API 문서 을 읽고 clojure.core/get
소스 코드에서 흥미로운 것을 발견했다.
(defn get
"Returns the value mapped to key, not-found or nil if key not present."
{:inline (fn [m k & nf] `(. clojure.lang.RT (get ~m ~k [email protected])))
:inline-arities #{2 3}
:added "1.0"}
([map key]
(. clojure.lang.RT (get map key)))
([map key not-found]
(. clojure.lang.RT (get map key not-found))))
주어진 키를 사용하여 값을 얻으려면 clojurelang.RT/get
함수를 사용하십시오. 코드는 점 연산자 -(. clojure.lang.RT (get map key))
을 호출합니다.
제 질문은 (clojure.lang.RT/get map key)
대신 (. clojure.lang.RT (get map key))
을 작성한 이유입니다.
기술적 인 차이점이 있습니까? 또는 어떤 이득?
'classname/method' 구문을 정의하기 전에 정의 했습니까? 내 생각 엔'clojure.lang.RT/get'은 컴파일 시점에서 구문 에러가 될 것입니다. – ToBeReplaced
''clojure.core'' 코드는 가장 낮은 수준의 양식을 사용하기 때문에 언어 철학을 이해하기에 아마도 좋은 곳이 아닙니다. 깨끗한 HTTP 추상화 (https://github.com/mmcgrana/ring/)를위한 링 또는 라우팅 DSL (https://github.com/weavejester/compojure)을위한 컴포지트와 같이 잘 설정된 라이브러리를 살펴 보는 것이 좋습니다. – sw1nn