编程的科学/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)