0
(defn factory-bar [] #((println "bar")))
(apply (factory-bar) []) ;throws NPE
이 버그인가요?
(defn factory-bar [] #((println "bar")))
(apply (factory-bar) []) ;throws NPE
이 버그인가요?
#((println "bar))
은 독자가 (fn [] ((println "bar")))
으로 번역되었습니다. 여분의 괄호에 유의하십시오. (println "bar")
은 여기에 bar
을 인쇄하고 nil
을 반환하고 바깥 괄호 때문에 nil
자체가 함수로 호출됩니다. nil
은 사실 null
이며, 역 참조를 시도하면 NPE가됩니다.
#(..)
: #(println "bar")
안에 여분의 괄호 쌍을 넣으면 안됩니다.
고맙습니다. 당신은 분명히했습니다. –
당신을 진심으로 환영합니다. 참고하시기 바랍니다. (http://clojure.org/reader#The%20Reader--Macro%20characters) 일반적으로 Clojure 독자 매크로와'# (..)'형식에 대한 광범위한 문서를 찾을 수 있습니다. –