跳转到正文

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

下一页 上一页 顶部

华夏公益教科书