在LISP中,Symbols符号是表示数据对象的名称,有趣的是,它也是数据对象。符号的特殊之处在于它们有一个称为属性列表或plist的组件。
LISP允许您为符号指定特性,例如,让我们有一个"person"对象。我们希望这个"person"对象具有诸如名称,性别,身高,体重,地址,职业等属性。
例如,以下语句允许我们将属性Title、Author和Publisher以及各自的值分配给名为(Symbol)‘book'的对象。
创建一个名为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)。
创建一个名为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函数允许您查看符号的所有属性。
创建一个名为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)
reprop函数从符号中删除指定的属性。
链接:https://www.learnfk.comhttps://www.learnfk.com/lisp/lisp-symbols.html
来源:LearnFk无涯教程网
创建一个名为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)) (remprop 'annie 'age) (terpri) (write (symbol-plist 'annie))
当您执行代码时,它返回以下结果-
(CHILDREN 3 SEX FEMALE JOB ACCOUNTANT AGE 43) (CHILDREN 3 SEX FEMALE JOB ACCOUNTANT)
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)