如何在Clojure中增加一个数字?

Ric*_*hez 6 clojure

我想知道如何将X数量增加一个数字,在我过去常用的其他语言中

foo + = 0.1;

但我不知道如何在Clojure中完成它

Bla*_*sad 9

变量在Clojure中是不可变的.所以你不应该试图改变它的价值foo,而是"创造"一个新的foo:

(def foo2 (+ foo 0.1))
Run Code Online (Sandbox Code Playgroud)

...或者,如果在循环中,使用新值重复:

(loop [foo 5.0]
  (when (< foo 9)
    (recur (+ foo 0.1))))
Run Code Online (Sandbox Code Playgroud)

...或者,如果foo是一个原子,swap!它有一个新值:

(def foo (atom 5.0))
(swap! foo (partial + 0.1))
Run Code Online (Sandbox Code Playgroud)

我建议你先阅读Clojure的基本原理.

  • [`swap!`](http://clojuredocs.org/clojure_core/clojure.core/swap!)接受一个函数和参数来进行更新,所以你可以这样写,而不是使用`partial`:`(交换!foo + 0.1)` (2认同)