신참 Clojure의 및 leiningen 질문 ("무엇인가"- 주요) :차이 및 lein 실행 "뭔가")
: 이것은 lein repl을에서 작동 아래에있는 내 프로젝트에서 코드 조각을 감안할 때==> (-main "something")
는 예상 "명령 : 뭔가 ... 실행 ... 다"생산 을하지만, 명령 줄에서 작동하지 않습니다 뭔가 :
me pallet1]lein run "something"
"는 명령을 생성합니다. .. 오류 : 명령으로 해결되지 않음 "
왜?/어떻게 해결할 수 있습니까? 메인 함수를 정의 :main eg.core
을 추가
lein new eg
그런 다음 생성 된 프로젝트 파일을 편집하고 생성 된 SRC/예/core.clj 파일을 편집하고이를 붙여 넣습니다 :
재현하려면
그런 다음
(ns eg.core)
(defn something [] (println "Something!"))
(defn run-command-if-any [^String commandname]
(printf "Command: %s ..." commandname)
(if-let [cmd (ns-resolve *ns* (symbol commandname))]
(
(println "running ...") (cmd) (println "done.")
)
(println "error: not resolved as a command.")
))
(defn -main [ commandname ] (run-command-if-any commandname))
lein repl
eg.core=> (-main "something")
을 core.clj 16,
작업 (예 : 인쇄 "(오류! 뭔가),하지만하지 않습니다 lein 실행 뭔가 즉,은을 인쇄합니다"없습니다 해결 "메시지)
무엇인가? 어디에서 정의 할 수 있습니까?그것이 당신의 clj 파일에없고 당신이 clj 파일을 읽기 때문에'lein run'을 실행하는 것은 repl에 정의되어 있습니다. –
REPL에서 두 코드를 모두 실행하면 "해결되지 않음"이 표시됩니다. –
Nikita가 말한 것처럼 repl/something이 예제 코드에 정의되어 있지 않습니다. 또한, 그것을 정의하더라도, (println "running") 결과를 호출하려고하기 때문에 NullPointerException이 발생합니다. –