vem*_*emv 7 clojure paul-graham
我想知道如何编写Nerds文章复仇中包含的累加器示例.很容易理解它是如何工作的,但是我无法在Clojure中重新创建它 - 它不会累积但只返回i的总和和n的初始给定值.
关键是incf(在Common Lisp版本中)或+ =(在JavaScript中).
换句话说:如何改变引用函数的状态?我已经看到了一些关于变量变量的例子,但它们看起来并不精确吗?
ama*_*loy 22
不要做它!在为时已晚之前保存自己!无缘无故地改变状态不是Clojure所鼓励的,所以当然它不像普通的lisp那样方便.
但严重的是,这是解释闭包的经典示例,虽然它不是在Clojure中非常有用的,但是很高兴知道翻译.你必须写下这样的东西:
(defn foo [n]
(let [acc (atom n)]
(fn [i] (swap! acc + i))))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1795 次 |
| 最近记录: |