我有一段非常简单的代码,我只是想遵循流程,我想我理解,但我只是想确保
(define count
(let ([next 0])
(lambda ()
(let ([v next])
(set! next (+ next 1))
v))))
基本上,count 会跟踪它被调用的次数。当您第一次调用它时,使用 let 将 next 设置为 0。稍后,使用 set! 将其更改为 1!我试图弄清楚为什么 (let ([next 0]) 每次调用程序时都没有将 next 设置回 0。据我所知, (lambda () ...) 是实际函数开始(不带参数),所以当您再次调用 count 时,它只是从那里执行,使用该范围内的 next 的值(集合!一个)
我想……老实说,我还是有点不确定。设置!只是自动永久更改 next 所以当你再次调用 count 时,即使第一行是 (let ((next 0))) 它实际上并没有回到零?