|
|
1
6
一点也不傻,我得想一想,试一下。 只有在使用宏而不是函数时,它才会起作用,因为宏的主体是在编译/宏扩展时计算的。例如。: (defmacro preprocess [f & args]
(let [x# (apply (resolve f) args)]
`~x#))
(def a (preprocess some-time-consuming-function some-literal))
(def b (preprocess some-other-time-consuming-function a))
|
|
|
2
4
首先,有一个非常重要的原因是
其次,这里有一种测试实际情况的方法:
|
|
|
3
3
在您的示例中,当您的代码被加载时,耗时的函数只被调用一次。 Clojure编译器不尝试优化常量表达式,但是javajit编译器在某些情况下可能会这样做。 |
|
|
4
0
对于给定的示例,表达式在编译/加载时进行计算。
创建并实习或定位名为的全局变量
|