최종 $fn
당신의 ArityException
의 메시지 1campaign$insert-BANG-$fn
에서이 insert!
내부에 생성 된 익명 함수는 인수의 잘못된 번호를 수신 (AN fn
형태 또는 #()
구문)임을 나타냅니다. 일반적으로 그러한 함수는 둘러싸는 함수를 "탈출"할 수 있습니다 (둘러싸는 함수는 값으로 반환하거나 어딘가에 넣을 수 있습니다). 그러나 여기서 잘못된 호출은 insert!
의 본문에있는 어딘가에서 발견 될 것입니다 , 그래서 당신은 그것을 검사 할 필요가있을 것이다.
문제가 insert!
인 경우 예외 메시지에 campaign$insert_BANG_
이 대신 표시됩니다.
REPL에서 보여 :
user=> (defn foo [x] ((fn [x y] (+ x y)) x))
#'user/foo
user=> (foo 1 2)
ArityException Wrong number of args (2) passed to: user$foo clojure.lang.AFn.throwArity (AFn.java:437)
user=> (foo 1)
ArityException Wrong number of args (1) passed to: user$foo$fn clojure.lang.AFn.throwArity (AFn.java:437)
참고 user$foo
첫 번째 경우 (foo
내부 하나만 인수 (fn [x y] (+ x y))
로 통화) 및 두번째의 user$foo$fn
(두 대신에 하나의 인자 foo
호출) .
1 사실은 내가 그 _BANG_
을 읽을 기대.
이 함수의 args를 수정했으며 이후 네일 스페이스를 다시로드 했습니까? 이전 버전을 얻었거나, 실수로 잘못된 네임 스페이스에 정의한 것일 수도 있습니다. – Hendekagon
$ fn은 익명의 기능을 의미합니다. 각 익명 함수에 이름을 추가하면 스택 추적이 더 읽기 쉽습니다. '(fn what-this-fn-does [args])'. 안타깝게도 이것은'#()'구문과 호환되지 않습니다. – noisesmith