방금 Clojure를 사용하기 시작했습니다. 몇 가지 기능을 이해할 수 있도록 작은 스크립트를 작성했습니다. 출력과 같이 Clojure의 "let"에 혼란 스럽군요
(def *exprs-to-test* [
"(filter #(< % 3) '(1 2 3 4 3 2 1))"
"(remove #(< % 3) '(1 2 3 4 3 2 1))"
"(distinct '(1 2 3 4 3 2 1))"
])
그런 다음이
*exprs-to-test*
을 통해, 그들 모두를 평가 가고, 인쇄 : 그것은 다음과 같이 시작
(doseq [exstr *exprs-to-test*]
(do
(println "===" (first (read-string exstr)) "=========================")
(println "Code: " exstr)
(println "Eval: " (eval (read-string exstr)))
)
)
위의 코드는 모든 작업 괜찮습니다.
(doseq [exstr *exprs-to-test*]
(let [ex (read-string exstr)] (
(do
(println "===" (first ex) "=========================")
(println "Code: " exstr)
(println "Eval: " (eval ex))
)
))
)
을하지만이 후, *exprs-to-test*
의 첫 번째 항목에 대해 한 번 작동하는 NullPointerException
와 충돌 그러나, (read-string exstr)
반복 그래서 난과 같이 반복을 제거하기 위해 let
을 사용하려고했습니다. let
이 추락 한 이유는 무엇입니까?
그걸 수정했습니다. 들여 쓰기 스타일 팁도 주셔서 감사합니다. –