我想在 Clojure 中编写一个闭包来模拟以下 JavaScript 代码:
var nextOdd = function () {
var x = 1;
return function () {
var result = x;
x += 2;
return result;
}
}();
nextOdd(); //1
nextOdd(); //3
nextOdd(); //5
我知道 Clojure 支持闭包,所以我可能会写类似的东西
(defn plusn [x]
(fn [y] (+ x y)))
(def plus2 (plusn 2))
(plus2 3)
但是我每次调用函数时都需要能够保持状态(即下一个奇数的状态)的东西......然后在 Clojure 中就有了整个不变性......