程式設計科學/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)
將訊息轉換為函式呼叫的閉包是一種技巧。