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!))