可变的结构体-1985-2020历年数学建模美赛赛题(中文版)

时间:2024-07-13 19:24:59
【文件属性】:

文件名称:可变的结构体-1985-2020历年数学建模美赛赛题(中文版)

文件大小:3MB

文件格式:PDF

更新时间:2024-07-13 19:24:59

程序设计 方法 架构 编程 面向对象

40.3 可变的结构体 Scheme的结构体是可变的。事实上,在 Advanced Student Scheme中,如 (define-struct posn (x y)) 这样的结构体定义引入了六个基本操作,而不只是四个: 1. make-posn,构造器; 2. posn-x和 posn-y,选择器; 3. posn?,判断器; 4. set-posn-x!和 set-posn-y!,变化器。 变化器是改变结构体内容的操作。 回忆一下,我们把结构体当作有隔间的方框。例如,结构体 (make-posn 3 4) 应当被视作有两个隔间的方框: 构造器建立隔间;选择器从特定的隔间中提取出值;判断器识别隔间;而变化器改变隔间的内容。换句话 说,变化器对它的参数是有效果的;它的返回值是不可见的。用图像来描述,可以把 (define p (make-posn 3 4)) (set-posn-x! p 5) 这样一个表达式的计算想象为一个方框,把其中旧的 x值删除,并插入一个新的 x值到同一个方框中: 假定定义: (define-struct star (name instrument)) (define p (make-star 'PhilCollins 'drums)) 考虑下列表达式的计算与效果: (begin (set-star-instrument! p 'vocals) (list (star-instrument p)))


网友评论