figwheel
またはlein-autoreload
を使用して、REPLの重要な側面を認識していないようです。Clojureで関数を再コンパイルするとコンパイルの警告が発生する
上記のいずれかのプラグインを使用してREPLを起動し、プロジェクトファイルの1つで変更を行うと、通常はコンパイラの警告が表示されます。しばしば、これはREPLを再起動しなければならないことを意味します.REPLはこれらのプラグインの目的を全て破ります。
例を挙げておきます。私は3つのファイル:core.cljs
,demoscene.cljs
とobjects.cljs
を持っています。彼らは私がそれらを挙げた順にお互いを参照します。 (:require [ns.demoscene :as demoscene])
。私の主な機能はcore.cljs
です。
lein figwheel
を使用して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
で関数を編集し、変更内容を保存した場合
は、私は、コンパイラの警告が表示されます
バックグラウンドで何が起こっているのか教えてもらえますか?私はこの状況を理解するために何が欠けていますか?私はこれらの警告を避けるために何をしなければならないのですか?
これ以上のリソースが必要な場合は教えてください。
言い換えれば、OPが見ているのは警告とエラーです。警告の意味を理解することは重要ですが、警告でもエラーでもないことを強調することも重要です。ご指摘のとおり、この警告は、コア機能の再定義についてのものであり、他の回答で指摘されているように、一般的には良いアイデアではありません。 –
ありがとうございます。正直言って、私はそのような核心機能が存在するかどうかはわかりませんでしたが、警告をもう一度読んだので明らかになりました。私は今、とても馬鹿だと感じています... – Joshua