我在哪里可以在clj文件中指定warn-on-reflection?

Zub*_*air 5 clojure

我试图在clj文件中使用warn-on-reflection.我写的时候:

(set! warn-on-reflection true)
Run Code Online (Sandbox Code Playgroud)

:ns声明后我收到错误:

 java.lang.Exception: Unable to resolve symbol: warn-on-reflection in this context 
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么?

kod*_*ddo 17

全局变量通常以名称以星号开头和结尾命名.

(set! *warn-on-reflection* true)
Run Code Online (Sandbox Code Playgroud)

我想你是从一个使这样的文字变粗的论坛中复制的.


更新:在leiningen project.clj中添加以下行:

  ;; Emit warnings on all reflection calls.
  :global-vars {*warn-on-reflection* true}
Run Code Online (Sandbox Code Playgroud)

https://github.com/technomancy/leiningen/blob/master/sample.project.clj

  • 当我在clj文件中使用这一行时,我收到错误"java.lang.IllegalStateException:无法更改/建立根绑定:*warn-on-reflection*with set" (3认同)

ove*_*ink 10

(set! *warn-on-reflection* true)可能是要走的路.如果您确实想使用特定于lein的方法来执行此操作,请参阅2.x的一些更新信息:

要在项目定义中设置全局:

(defproject foo ...
  :global-vars {*warn-on-reflection* true}
  ...)
Run Code Online (Sandbox Code Playgroud)

或者只是定期运行lein check,因为它会在反射时发出警告.