Practice 2.74
每个分支机构的文件结构都可能不同,所以可以把每个分支机构的选择函数保存在总部,通用过程get-record根据每个分支机构的不同选取不同的选择函数:
sub1 | sub2 | sub3 | |
---|---|---|---|
get-record | fun1 | fun2 | fun3 |
所以每个分支结构应该具有一个唯一的标识,所以分支的file可以统一这样构造:
(define (make-file tag file)
(cons tag file))
构造通用过程get-record:
(define (get-record file employee)
((get 'get-record (car file)) file employee))
每个分支的record结构也可能不同,所以get-salary也要在保存在总公司
sub1 | sub2 | sub3 | |
---|---|---|---|
get-salary | fun4 | fun5 | fun6 |
构造通用过程get-salary
(define (get-salary file employee)
((get 'get-salary (car file)) (get-record file employeee)))
find-employee-record只要在表里递归查找就可以了
(define (find-employee-record files employee)
(if (null? files)
'()
(cons (get-record (car files) employee) (find-employee-record (cdr files)))))
当要并购新公司的时候,只需要把新公司独有的选择函数put进选择函数的记录里就行了