我想知道如何用 X 增加一个数字,用我以前做的其他语言
富 += 0.1;
但我不知道如何在 Clojure 中完成
Clojure 中的变量是不可变的。所以你不应该尝试改变 的值foo
,而是“创建”一个新的 foo:
(def foo2 (+ foo 0.1))
...或者,如果在循环中,则使用新值重复:
(loop [foo 5.0]
(when (< foo 9)
(recur (+ foo 0.1))))
...或者,如果 foo 是一个原子,swap!
它具有一个新值:
(def foo (atom 5.0))
(swap! foo (partial + 0.1))
我建议您从阅读Clojure 的基本原理开始。
Blacksad 的回答涵盖了定义变量,所以我只想添加其他范围,您可能希望在其中拥有一个从另一个值递增的值:
在函数的本地范围内:
user> (defn my-function [x]
(let [y (inc x)
z (+ x y)]
[x y z]))
#'user/my-function
user> (my-function 4)
[4 5 9]
如果您想逐步建立价值以使流程更加清晰:
user> (defn my-function [x]
(let [y (inc x)
z (+ x y)
z (+ z 4)
z (* z z)]
[x y z]))
#'user/my-function
user> (my-function 4)
[4 5 169]
这可以使过程更加形象化,尽管它不是“取回变量的方法”,并且实际上仅在有限的上下文中有用。此模式用于 clojure.core 的线程宏。