欢迎!有关此如何工作,请参阅关于页面以获取更多信息。
你好,
我注意到了以下情况
user> (-> '(some-> 1 inc) clojure.walk/macroexpand-all (clojure.pprint/pprint )) (let* [G__427566 1] (if (clojure.core/nil? G__427566) nil (inc G__427566)))
例如,编译时已知的值,如标量,本来就不应该在运行时进行检查。
更现实的用例可以在这里找到:https://github.com/clojure-emacs/refactor-nrepl/blob/cb939222d45bc20926202868922bd3e457d59b8f/src/refactor_nrepl/ns/tracker.clj#L33-L35
修复此问题可以提高性能,并且会使类似Eastwood的linters更加愉快(我在此期间正在调整它以省略此错误)
检查“运行时已知的值”是一个复杂的操作,这个模式有一个简单的解决方案(并且由于即时编译(jit),在大多数情况下可能会在性能上略有改进)。因此,我不认为这样做是有意义的。