LISP - 结构 - Lisp教程

结构是用户定义的数据类型,它让用户可以合并不同种类的数据项。

结构被用于表示记录。假设要跟踪图书馆中的书籍。可能希望跟踪了解每本书的以下属性:

定义一个结构

LISP的defstruct宏允许定义一个抽象的记录结构。defstruct语句定义了一个新的数据类型,项目结构中不止一个成员。

讨论defstruct宏的格式,编写本书的结构的定义。可以定义本书的结构为:

(defstruct book 
  title 
  author 
  subject 
  book-id 
 )

请注意:

(setf (book-book-id book3) 100)

示例

创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:

(defstruct book 
  title 
  author 
  subject 
  book-id 
 )
( setq book1 (make-book :title "C Programming"
                       :author "Nuha Ali" 
                       :subject "C-Programming Tutorial"
                       :book-id "478"))
( setq book2 (make-book :title "Telecom Billing"
                       :author "Zara Ali" 
                       :subject "C-Programming Tutorial"
                       :book-id "501")) 
(write book1)
(terpri)
(write book2)
(setq book3( copy-book book1))
(setf (book-book-id book3) 100) 
(terpri)
(write book3)

当执行代码,它返回以下结果:

#S(BOOK :TITLE "C Programming" :AUTHOR "Nuha Ali" :SUBJECT "C-Programming Tutorial" :BOOK-ID "478")
#S(BOOK :TITLE "Telecom Billing" :AUTHOR "Zara Ali" :SUBJECT "C-Programming Tutorial" :BOOK-ID "501")
#S(BOOK :TITLE "C Programming" :AUTHOR "Nuha Ali" :SUBJECT "C-Programming Tutorial" :BOOK-ID