emacs lisp中的关联表
Grey
全部学习汇总: https://github.com/GreyZhang/editors_skills
什么是emacs lisp的关联表
关联表是一个列表,元素是一个cons pair键值对。其每一个key和value的类型都是可以是任意类型。 从功能上讲,多少有点类似哈希表的作用。
- 类似MATLAB中的map
- python中的字典
- perl中的哈希
上面的几个类似的结构,说到底都是哈希的不同叫法,那么这个关联表与哈希结构的差异有什么呢? 主要是以下几点:
- 关联表是有序的
- 关联表可以有重复的key
- 处理的速度差异
- key是唯一的
- 里面的元素不是有序的
- 对于乱序的访问来说,处理大量数据的时候哈希表的速度要快一些。
(setq x
'(("foo" . 123)
("bar" . 456)
(3 . "hello world")))
执行的效果如下: 
通过key获取数值
(assoc "bar" x)
执行的效果如下:

通过value获取key
(assoc 123 x)
执行的效果如下: 
这部分功能其实跟这个关联表本身没关系了,属于emacs lisp的另一个操作,也是 最早我接触emacs的书籍的时候看到的操作。需要清楚两个函数car、cdr。前者可以 获取第一个元素,而后者可以获取第二个元素。 执行的效果如下:

两个处理方法都是差不多的,只是调用的函数不一样,但是有着一样的语法结构。 需要注意的是,关联表的信息值可能是重复的,如果有重复的话,相关的函数返回 的会是第一个。
本文介绍了EmacsLisp中的关联表,一种类似哈希表的数据结构,支持任意类型的键值对,并保持有序性。文章对比了关联表与其他语言中哈希结构的区别,并提供了创建、查询关联表的基本示例。
626

被折叠的 条评论
为什么被折叠?



