结构
编辑教程结构
结构是用户定义的数据类型,它让用户可以合并不同种类的数据项。
结构被用于表示记录。假设要跟踪图书馆中的书籍。可能希望跟踪了解每本书的以下属性:
- 标题 - Title
- 作者 - Author
- 科目 - Subject
- 书籍编号 - Book ID
定义一个结构
LISP的defstruct宏允许定义一个抽象的记录结构。defstruct语句定义了一个新的数据类型,项目结构中不止一个成员。
讨论defstruct宏的格式,编写本书的结构的定义。可以定义本书的结构为:
(defstruct book
title
author
subject
book-id
)
请注意:
上述声明创建一个本书结构有四个命名组件。因此,创建的每一个本书将是这个结构的对象。
- 它定义了一个名为book-title,book-subject,book-book-id的书籍,这将需要一个参数,书的结构,并且将返回的字段标题,作者,主题和本书的book-book-id对象。这些函数被称为接入功能。
- 符号书成为一个数据类型,它可以使用typep谓词检查。
- 也将命名为book-p隐函数,这是一个谓词,将为true,如果它的参数是本、书,则返回false。
- 另一个名为make-book 隐函数将被创建,这是一种构造方法,其中,当被调用时,将创建一个数据结构具有四个组件,适于与所述接入功能的使用。
- #S语法指的是一个结构,可以用它来读取或打印一本书的实例
- copy-book书本参数还定义了隐函数。这需要书的对象,并创建另一个书的对象,这是第一个副本。调用此函数复印机功能。
可以使用setf改变书籍的组成结构,例如
(setf (book-book-id book3) 100)
示例
创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:
(adsbygoogle = window.adsbygoogle || []).push({});
(adsbygoogle = window.adsbygoogle || []).push({});
(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
Mos固件,小电视必刷固件
ES6 教程
Vue.js 教程
JSON 教程
jQuery 教程
HTML 教程
HTML 5 教程
CSS 教程
CSS3 教程
JavaScript 教程
DHTML 教程
JSON在线格式化工具
JS在线运行
JSON解析格式化
jsfiddle中国国内版本
JS代码在线运行
PHP代码在线运行
Java代码在线运行
C语言代码在线运行
C++代码在线运行
Python代码在线运行
Go语言代码在线运行
C#代码在线运行
JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。
大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
选择支付方式:
立即支付
¥
9.99
无法付款,请点击这里
金额: 0 元
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟