저는 Clojure를 처음 접하고 기초를 배우려고합니다. 한 가지 깨닫게 된 것은 데이터 구조와 그들이 사용하는 함수 사이의 상관 관계를 이해하는 것입니다. 나는 새로운 벡터 만들 경우Clojure 데이터 구조 함수
는 예를 들어, 그런 다음
(def my-vec [1 2 3])
을 나는 my-vec
를 호출 할 때 :
(my-vec)
내가 얻을 :
ArityException Wrong number of args (0) passed to: PersistentVector clojure.lang.AFn.throwArity (AFn.java:437)
내가 아는 나는 그 논쟁을 통과 할 수 있고 get
를 부르는 것처럼 보이지만 어떻게 알 수 있습니까? 어떤 args가 PersistentVector
을 취하고 어디서 문서를 찾을 수 있습니까?
(doc PersistentVector)
을하지만 그 nil
를 반환
그게 도움이! 그래서'(my-vec)'또는'(my-vec 1)'을 호출 할 때'IPersistentVector'가'nth'를 호출하는'invoke()'를 호출합니까? –
코드에서 답을 찾았습니다 : https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/PersistentVector.java#L593 –