我有一個非常簡單的代碼,我只是想跟隨的流量,我想我理解,但我只是想確保Scheme-使用set!改變一個變量
(define count
(let ([next 0])
(lambda()
(let ([v next])
(set! next (+ next 1))
v))))
基本上,計數跟蹤它被調用的次數。當你第一次調用它時,使用let將下一個設置爲0。然後,使用set!更改爲1。我試圖弄清楚爲什麼(let([next 0])在接下來的每次調用該程序時都沒有設置爲0)。我可以告訴的是,(lambda()...)是實際功能開始(不帶參數),所以當你再次調用count時,它只是從那裏執行,使用該範圍中下一個的值(set!one)
我想......我老實說還是一個不確定是否設置!只是自動改變下一個永久性,所以當你再次調用計數時,即使第一行是(let((next 0)))它實際上並沒有回到零?
謝謝!這實際上消除了我也有的一些混亂。 –