322_common lisp 查询函数

完整的emacs and lisp的学习集合整理如下:

https://github.com/GreyZhang/g_lisp

    继续emacs以及lisp的学习,这次来看几个common lisp中的查询函数。

322_common lisp 查询函数

    从上面的结果可以看出,查询成功的时候返回相应的查询数值。查询失败的时候,返回nil。

322_common lisp 查询函数

    同样的功能,也可以用于列表的查询。

322_common lisp 查询函数

    这个查询功能在使用的时候还能够传入一个函数用来处理列表中的各个元素。其中,第一个元素就是查找对象。

322_common lisp 查询函数

    但是,类似的功能在列表中可能会出问题。上面的测试中,从提示的信息看,列表的子元素是不会自动展开的。这样,在执行相应功能的时候就可能出现类型不匹配的错误。如何进行类似功能的测试操作呢,接下来做一个相关的测试。

322_common lisp 查询函数

    从上面测试记录,看得出如果使用了一个可以接收不同的类型的函数,则可以进行各种相应的判断。

322_common lisp 查询函数

    此外,还有一个test-not的函数参数。这个是用来寻找第一个不满足条件的元素的。

322_common lisp 查询函数

    还有一个start的属性,可以用来只是从哪个index开始进行搜索。

322_common lisp 查询函数

    除此之外,还有一个可以用于指定结束index的属性。从上面的结果看,其实这个行为我 还是很熟悉的,在什么地方呢?在python的数组切片功能中。

322_common lisp 查询函数

    Find-f的功能与find其实是类似的,但是更加简洁一些。传入参入的顺序也有一些不同。

322_common lisp 查询函数

    还有一个与之相反的操作,find-if-not。

322_common lisp 查询函数

    Find-f还有一个用法,可以类似find一样,传入一个属性参数,这样可以用来处理更加复杂的数据结构。

322_common lisp 查询函数

    此外还有一个position函数,这个可以搜索出内容的位置。不过,这个不同于find,似乎传入的第一个函数是不起作用的。除了position之外,其实还有一个position-if和一个position-if-not。两个函数的使用类似前面的find,这里不再继续作相应的演示了。

完整的emacs and lisp的学习集合整理如下:

https://github.com/GreyZhang/g_lisp