考虑下面这个假想的无意义ClojureScript函数:
```clojure (defn foo [x] (let [y (* x 2)] (if (> y 10) (+ y 1) (- y 1)))) ```
该函数接受一个参数x,并将其乘以2得到y。如果y大于10,则返回y加1,否则返回y减1。
在重复执行(tmp)的情况下?
```clojure (defn foo [x] (let [y (* x 2)] (if (> y 10) (+ y 1) (- y 1)))) ```
该函数接受一个参数x,并将其乘以2得到y。如果y大于10,则返回y加1,否则返回y减1。
(defn tmp []
(def p 0)
(set! p (inc p))
(set! p (inc p))
(set! p (inc p)))
在REPL中重复执行此函数会产生
3
6
9
etc.
是否可以创建一个局部函数可变变量,以便输出将是
3
3
3
etc.
在重复执行(tmp)的情况下?
String filename = null; try { possibly set filename } finally { if (filename != null) new File(filename).delete() }
的等效操作相当困难。 - Nicholas DiPiazzaString filename
)的方法来完成任务。如果你真的需要一个,可以使用原子(atom)。原子(atom)的性能很好。它使用Java代码来管理共享、同步、独立的状态(例如,在处理并发代码时,你不必自己进行锁定)。 - user2609980