转到内容

程序设计科学/Sway演示文稿/对象/闭包作为对象

来自维基教科书,开放世界的开放书籍

闭包作为对象

来自《计算机程序的结构与解释》

   (define (account amount)
       (define (deposit d) (set! amount (+ amount d)))
       (define (withdraw w) (set! amount (- amount w)))
       (lambda (msg arg)
           (cond
               ((eq msg 'withdraw) (withdraw arg))
               ((eq msg 'deposit) (deposit arg))
               (else (error "unknown message: " msg))
               )
           )
       )

现在我们可以将“account”当作构造函数处理

   (define a (account 100))
   (a'withdraw 10)
   (a'deposit 20)

将消息转换为函数调用的闭包是一种技巧。


下一页 上一页 顶部

华夏公益教科书