实际上这是http://www.paulgraham.com/icad.html中的一个问题 Common Lisp代码:
(defun foo (n)
(lambda (i) (incf n i)))
Python代码:
def foo (n):
s = [n]
def bar (i):
s[0] += i
return s[0]
return bar
我想知道如何使用Clojure在函数中保存值。
请注意,这是一个累加器,意味着
(def foo-2 (foo 2))
(foo 2) => 4
(foo 3) => 7
答案 0 :(得分:1)
(defn foo [n]
(let [accumulate (atom n)]
(fn [i] (swap! accumulate + i))))
(def foo-2 (foo 2))
(foo-2 2)
=> 4
(foo-2 3)
=> 7