轉到內容

程式設計科學/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)

將訊息轉換為函式呼叫的閉包是一種技巧。


下一頁 上一頁 頂部

華夏公益教科書