如何检查是否在 REPL 中评估 Clojure 代码?
How to check whether Clojure code is being evaluated inside a REPL?
我想根据我的代码是 运行 来自 REPL 还是 运行 编译的 jar 来格式化我的日志。
有什么简单的方法吗?我在想,当 运行 加入 REPL 时,莱宁根可能会在某处留下痕迹。
(defn current-stack-trace []
(.getStackTrace (Thread/currentThread)))
(defn is-repl-stack-element [stack-element]
(and (= "clojure.main$repl" (.getClassName stack-element))
(= "doInvoke" (.getMethodName stack-element))))
(defn is-in-repl []
(some is-repl-stack-element (current-stack-trace)))
(defn my-log [msg]
(if (is-in-repl)
(prn (str "RUNNING IN REPL : " msg))
(prn msg)))
我想根据我的代码是 运行 来自 REPL 还是 运行 编译的 jar 来格式化我的日志。
有什么简单的方法吗?我在想,当 运行 加入 REPL 时,莱宁根可能会在某处留下痕迹。
(defn current-stack-trace []
(.getStackTrace (Thread/currentThread)))
(defn is-repl-stack-element [stack-element]
(and (= "clojure.main$repl" (.getClassName stack-element))
(= "doInvoke" (.getMethodName stack-element))))
(defn is-in-repl []
(some is-repl-stack-element (current-stack-trace)))
(defn my-log [msg]
(if (is-in-repl)
(prn (str "RUNNING IN REPL : " msg))
(prn msg)))