跳转到内容

Scheme 编程/记录类型

来自 Wikibooks,面向开放世界的开放书籍

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!))
华夏公益教科书