访问变量可以说我有方案如下闭合,增加计数器每次它被称为:计划 - 在封闭
(define count
(let ((next 0))
(lambda()
(set! next (+ next 1))
next)))
我的问题很简单,我怎么能重新写这个函数这样我就可以在不增加计数器的情况下访问next
的值?我尝试过使用lambda表达式,但我似乎无法弄清楚。
编辑:一些背景:
(define (dispatch m)
(let ((count 0))
(cond ((eq? m 'withdraw) withdraw) ; Increments count
((eq? m 'deposit) deposit) ; Increments count
((eq? m 'balance) balance-return)
((eq? m 'transaction) count) ; "count" on this line should return the value
(else (error "Unknown request -- MAKE-ACCOUNT"
m)))))
你可以举一个使用'next'值的代码示例吗? –
添加到主要问题。 – nbduckman
在你提供的例子中,总是返回内层的count(在这种情况下为0),因为你用let绑定它。您必须在'dispatch'函数内改变'count'的定义。我想这就是你要做的,但我不确定 –