8.2 属性列表 (Property Lists)
在 Common Lisp 里,每个符号都有一个属性列表(property-list)或称为 plist
。函数 get
接受符号及任何类型的键值,然后返回在符号的属性列表中,与键值相关的数值:
> (get 'alizarin 'color)
NIL
它使用 eql
来比较各个键。若某个特定的属性没有找到时, get
返回 nil
。
要将值与键关联起来时,你可以使用 setf
及 get
:
> (setf (get 'alizarin 'color) 'red)
RED
> (get 'alizarin 'color)
RED
现在符号 alizarin
的 color
属性是 red
。
图 8.1 符号的结构
> (setf (get 'alizarin 'transparency) 'high)
HIGH
> (symbol-plist 'alizarin)
(TRANSPARENCY HIGH COLOR RED)
注意,属性列表不以关联列表(assoc-lists)的形式表示,虽然用起来感觉是一样的。
在 Common Lisp 里,属性列表用得不多。他们大部分被哈希表取代了(4.8 小节)。
当前内容版权归 readthedocs 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 readthedocs .