cljファイルでwarn-on-reflectionを使用しようとしています。私が書くとき:cljファイルでwarn-on-reflectionをどこで指定できますか?
(set! warn-on-reflection true)
:NS宣言の後、私はエラーを取得する:
java.lang.Exception: Unable to resolve symbol: warn-on-reflection in this context
誰もがなぜ知っていますか?
cljファイルでwarn-on-reflectionを使用しようとしています。私が書くとき:cljファイルでwarn-on-reflectionをどこで指定できますか?
(set! warn-on-reflection true)
:NS宣言の後、私はエラーを取得する:
java.lang.Exception: Unable to resolve symbol: warn-on-reflection in this context
誰もがなぜ知っていますか?
グローバル変数は、通常、アスタリスクで始まり、アスタリスクで終わる名前で命名されます。
(set! *warn-on-reflection* true)
このようなテキストを太字にするフォーラムからコピーしたと思います。
更新:あなたのLeiningenをするproject.cljにこれらの行を追加します。
;; Emit warnings on all reflection calls.
:global-vars {*warn-on-reflection* true}
https://github.com/technomancy/leiningen/blob/master/sample.project.clj
(set! *warn-on-reflection* true)
はおそらく行く方法です。
は、プロジェクトの定義でグローバルに設定するには:
(defproject foo ...
:global-vars {*warn-on-reflection* true}
...)
それとも定期的にlein check
を実行して、あなたがこれを行うにはレイン固有のメソッドを使用したい場合は、ここで2.xのためのいくつかの更新情報ですそれは反射について警告するので。
+1の 'リインチェック '。 '* warn-on-reflection *'はエラーを出さなかったが、プロファイラは 'getMethods'を呼び出すのに費やされた時間は10%だったと言っていた。 'lein check'は私のメインの個人図書館(whoops)のランダムヘルパーであることを示しました。 – Carcigenicate
この行をcljファイルで使用すると、「java.lang.IllegalStateException:ルートバインディングを変更できません:* warn-on-reflection *とセット」のエラーが発生します。 – Zubair
_warn-on-reflection_ in project.cljは廃止されました([link](https://github.com/technomancy/leiningen/blob/master/leiningen-core/src/leiningen/core/eval.clj) - 行335) – gadon