学习LISP我发现LISP中的任何对象都可以通过属性列表定义自己的一组属性。我想知道这些属性列表是否用于现实生活中的LISP编程,因为(从我的角度来看)属性隐藏了真实对象的结构?
我的意思是我可以通过以下方式定义列表:
(:property1 value1 '(10 20 30))
或当应用属性列表时,它就像:
('(10 20 30))
没有人不知道这个名单隐藏了任何财产。
那么应该使用属性列表吗?
答案 0 :(得分:4)
Emacs Lisp广泛使用属性列表来记录有用的信息:在源代码中定义变量或函数,如何缩进宏,应用于字符串或缓冲区中的文本块的字体,以及许多其他事情。所以答案是肯定的,它们被用于现实生活中。
除了与每个符号相关联的属性列表(不是每个对象,正如Rörd所指出的那样),Emacs Lisp还允许您使用属性列表,无论您在哪里找到它们都很方便,因为它们'只是普通的名单。用于操作符号过滤器(get
,put
等)的功能与用于操作存储在其他地方(plist-get
,plist-put
)的过梁的功能不同。 Common Lisp看起来像similar distinction,表达方式略有不同。