编程的科学/SwayPresentations/对象/EnvironmentsAsObjects
外观
环境作为对象
如果您将现有“对象”用作“对象”,那么环境会是更好的选择。
在 Scheme 中,环境是一等“对象”。
(define (account amount)
(define (deposit d) (set! amount (+ amount d)))
(define (withdraw w) (set! amount (- amount w)))
(procedure-environment (lambda () 1))
)
我们需要“点”运算符
(define (dot obj message)
(eval message obj)
)
现在,我们的帐户看起来像
(define a (account 100)) ((dot a 'withdraw) 10) ((dot a 'deposit) 20)