此页面上显示的make-account
功能中使用的“dispatch”关键字的作用是什么:https://courses.cs.washington.edu/courses/cse341/14wi/racket/objects.html
(define (make-account)
(let ((my-balance 0))
;; return the current balance
(define (balance)
my-balance)
;; make a withdrawal
(define (withdraw amount)
(if (>= my-balance amount)
(begin (set! my-balance (- my-balance amount))
my-balance)
"Insufficient funds"))
;; make a deposit
(define (deposit amount)
(set! my-balance (+ my-balance amount))
my-balance)
;; the dispatching function -- decide what to do with the request
(define (dispatch m)
(cond ((eq? m 'balance) balance)
((eq? m 'withdraw) withdraw)
((eq? m 'deposit) deposit)
(else (error "Unknown request -- MAKE-ACCOUNT" m))))
dispatch))
Racket文档主要提到了网络调度(https://docs.racket-lang.org/search/index.html?q=dispatch)。
答案 0 :(得分:1)
dispatch
只是在词法范围内与my-balance
一起制定的程序之一的名称和帮助程序。
它也是来自make-account
过程的返回值,并作为消息传递过程运行到滚动您自己的类。调用它将返回一个可用于访问/改变对象数据的过程,因此命名为。
Dispatch并不是对象系统中传递消息所特有的,因此在处理Web服务器应用程序中的请求时会发现类似的措辞,以及处理请求/触发器上的某些内容的其他内容。
答案 1 :(得分:0)
在(define (dispatch m)
中,dispatch
不是关键字或特殊形式。它是已定义函数的名称。