Scheme 编程/记录类型
外观
R7RS 在 R5RS 中提供的一个新增功能就是定义“记录类型”,这是一类新的数据类型。记录类型与数字、字符串和对一样为不相交类型。R7RS 语法基于 SRFI 9,而记录类型仅仅是一组已命名的数据字段集合。如果你熟悉 C 结构,那么它们是一个类似的概念。在 Scheme 中,可以定义包括方法在内的对象,如 面向对象 中所示。
在 define-record-type 语法中有四个部分:类型名称、构造函数、谓词以及一系列 getter 和 setter。
;; A record type called <animal>
(define-record-type <animal>
;; Constructor
(animal name age species owner-name)
;; Predicate
animal?
;; Getters and setters (omit the setter for immutable fields)
(name animal-name set-animal-name!)
(age animal-age set-animal-age!)
(species animal-species)
(owner-name animal-owner set-animal-owner!))