figwheel
또는 lein-autoreload
을 사용하여 REPL의 중요한 측면을 알지 못하는 것 같습니다.Clojure에서 함수를 다시 컴파일하면 컴파일러 경고가 발생합니다.
언급 된 플러그인 중 하나를 사용하여 REPL을 시작하고 프로젝트 파일 중 하나에서 변경을 수행하면 보통 컴파일러 경고가 표시됩니다. 종종 이것은 REPL을 다시 시작해야한다는 것을 의미합니다. REPL은 해당 플러그인의 모든 목적을 이깁니다.
예를 들어 설명해 드리겠습니다. 나는 세 파일을 가지고 : core.cljs
, demoscene.cljs
및 objects.cljs
. 그들은 내가 언급 한 순서대로 서로를 참조합니다. (:require [ns.demoscene :as demoscene])
. 내 주요 기능은 core.cljs
에 있습니다.
lein figwheel
을 사용하여 REPL을 시작하고 브라우저를 시작하면 모든 것이 잘 동작합니다.
Compile Warning src/cljs/ns/demoscene.cljs
update already refers to: cljs.core/update being replaced by: ns.demoscene/update
이 하나 개 이상의 수준에서 정말 홀수가 :
- 내가
demoscene.cljs
을 편집하지 않은 내가
- 왜해야합니까
cljs.core/update
은ns.demoscene/update
- 으로 교체해야합니다. (내가 figwheel 세션을 다시 시작하지 않습니다.) 모든 것이 다시 정상적으로 작동합니다. 변경 사항이 적용됩니다.
objects.cljs
에서 함수를 편집하고 변경 사항을 저장하면
, 나는 컴파일러 경고를
백그라운드에서 무슨 일이 일어나는지 말해 줄 수 있습니까? 이 상황을 이해하기 위해 나는 무엇을 놓치고 있습니까? 이러한 경고를 피하려면 어떻게해야합니까?
더 이상 리소스가 필요하면 알려주십시오. core.cljs
:
다른 언급 할 점은 OP가 보는 것은 경고와 오류가 아니라는 것입니다. 경고의 의미를 이해하는 것이 중요하지만 오류가 아니라 경고임을 강조하는 것이 중요합니다. 앞서 지적한 바와 같이, 경고는 핵심 기능의 재정의와 다른 응답에서 지적한대로, 일반적으로 좋은 아이디어는 아닙니다. 그렇게 할 진정한 필요성/이유가 없다면 말입니다. –
답변 해 주셔서 감사합니다. 솔직히 말해서, 나는 핵심 기능이 존재한다는 것을 알지 못했다. 그러나 이제 나는 경고를 다시 읽었지만, 분명해진다. 나는 지금 바보 같아서 ... – Joshua