JSRUN 用代码说话

符号

编辑教程

符号

在LISP语言中,符号是表示数据对象和有趣的是它也是一个数据对象的名称。

是什么使得符号特殊之处在于他们有分别叫property list,或 plist.

属性列表

LISP可以让属性,以符号分配。例如,我们有一个'人'的对象。希望这个'人'的对象有像姓名,性别,身高,体重,住址,职业等属性是一些属性名称。

一个属性列表被实现为具有元素为偶数(可能为零)的列表。每对列表中的元素构成一个条目;第一个项目是指标,而第二个是该值。

当创建一个符号,它的属性列表最初是空的。属性是使用于asetf形式得到建立。

例如,下面的语句使我们能够分配属性标题,作者和出版商,以及相应的值,命名(符号)'书'的对象。

示例 1

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

((write (setf (get 'books'title) '(Gone with the Wind)))
(terpri)
(write (setf (get 'books 'author) '(Margaret Michel)))
(terpri)
(write (setf (get 'books 'publisher) '(Warner Books)))

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

(GONE WITH THE WIND)
(MARGARET MICHEL)
(WARNER BOOKS)

各种属性列表功能允许你指定的属性以及检索,替换或删除一个符号的属性。

get 函数返回符号的属性列表对于一个给定的指标。它的语法如下:

get symbol indicator &optional default

get 函数查找指定的指标给定的符号的属性列表,如果找到则返回相应的值;否则默认返回(或nil,如果没有指定默认值)。

示例 2

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

(setf (get 'books 'title) '(Gone with the Wind))
(setf (get 'books 'author) '(Margaret Micheal))
(setf (get 'books 'publisher) '(Warner Books))
(write (get 'books 'title))
(terpri)
(write (get 'books 'author))
(terpri)
(write (get 'books 'publisher))

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

(GONE WITH THE WIND)
(MARGARET MICHEAL)
(WARNER BOOKS)

symbol-plist函数可以看到一个符号的所有属性。

示例 3

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

(setf (get 'annie 'age) 43)
(setf (get 'annie 'job) 'accountant)
(setf (get 'annie 'sex) 'female)
(setf (get 'annie 'children) 3)
(terpri)
(write (symbol-plist 'annie))

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

(CHILDREN 3 SEX FEMALE JOB ACCOUNTANT AGE 43)

remprop函数从符号中删除指定的属性。

示例 4

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

(adsbygoogle = window.adsbygoogle || []).push({});



(adsbygoogle = window.adsbygoogle || []).push({});
(setf (get 'annie 'age) 43)
(setf (get 'annie 'job) 'accountant)
(setf (get 'annie 'sex) 'female)
(setf (get 'annie 'children) 3)
(terpri)
(write (symbol-plist 'annie))
(remprop 'annie 'age)
(terpri)
(write (symbol-plist 'annie))

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

(CHILDREN 3 SEX FEMALE JOB ACCOUNTANT AGE 43)
(CHILDREN 3 SEX FEMALE JOB ACCOUNTANT)
JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟