223_emacs lisp映射类函数

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

    https://github.com/GreyZhang/g_lisp

    继续分析spacemacs配置,查看如下代码:

    上学时候学习到的思修等课程里面,我觉得有一知识点我现在是深有体会。什么知识点呢?那就是量变到质变!现在我进行这个配置文件的学习速度不是很快,总是遇到不懂的东西,归根结底还是我掌握的这门语言的基础语料不是很多。没有找到理想的教程,这样的话只能是慢慢摸索了。不过,随着相应的学习继续,语料逐渐增加,慢慢的看代码进行分析自然会变得容易起来。

    这一次,分析的对象是mapc,如果这个能够掌握了,上面的这段代码究竟是怎么工作起来的我也就清楚了。当然,想要知道这段代码做了什么工作的话,并不需要花这么大的力气,人家的代码写的可读性这么好,一看就清楚。代码的功能就是把后面的三个目录增加到load-path中去呗!不过,这样是掌握不了这门编程语言的,我是这么认为的。

    查看mapc的帮助信息;

    从上面的描述看,就是让FUNCTION作用于序列中的每一个元素。那么,这个fucntion以及序列有什么格式上或者类型上的要求呢?或许需要看一下elisp文档是否还有更详细的描述。

    简单浏览了一下相关文档,或许这次应该要掌握这个功能系列的函数了。

    其实,这样的概念我在接触python的时候也是看到过的。只不过,python中这样的功能我基本上也不用,我用的更多的还是循环。或许,在这次学习的过程中,能够接触到更多人的这种技巧我能够也逐渐过渡到类似的思维上来。

    针对这几个功能,从上面的描述看,主要的功能是进行列表元素的映射传递。并且,不支持char-table。

    接下来看mapcar。

    这是文档中附加的例子,我自己会简单练习一下看看。相应的结果也就不在这里展示了。着所有的例子全都弄清楚,还需要补充一些基础的知识。不过,前面的两个例子还是可以看得懂的。

    Mapcar的功能就是传入一个函数和一个列表,函数将会作用于每一个列表元素并把所有的结果构建成一个list。

    而我们最初看到的那个配置代码中的mapc又是什么情况呢?其实,这个都是可以理解为:mapcar是一种特殊的mapc,可以返回一个列表。或者反过来说,mapc是mapcar的一个精简版,不带返回值组成的list,每次都是返回传入的序列。

    做一个测试吧:

    到此,我们就可以去尝试分析解读一下配置代码了。

    其中,add-to-load-path的函数前面已经分析过了。这个其实就是把一个字符串增加到load-path变量中,之后emacs根据这个变量信息查找搜索目录。这样,这里的这段代码的功能其实就是把3个目录增加到emacs可以搜索到的load-path中。而三个目录,都是通过之前总结过的反引号的功能进行了求值的。

 

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

    https://github.com/GreyZhang/g_lisp

发布了812 篇原创文章 · 获赞 163 · 访问量 172万+

猜你喜欢

转载自blog.csdn.net/grey_csdn/article/details/104268516
223